Agents and API
Connect your own agent with the API and MCP
Closed testing
API and MCP access is in closed testing. It is switched on per organisation while we learn how teams use it, so the API keys tab in Settings appears for owners and admins once your organisation is in. To join, request early access and tell us what your agent should do.
What your agent can do
The same tools sit behind both routes: list and inspect markets, campaigns and segments; read Share of Voice, top of mind, sentiment, sources and narratives; export responses page by page; and create campaigns, price them and run waves. An agent sees the same numbers the dashboard shows, scoped to your organisation.
Results contain text written by AI models and synthetic audience members. Treat it as evidence to analyse, never as instructions for your agent to follow.
Connect an AI assistant (MCP)
Add LLMEKNOW as a custom connector with this address:
https://llmeknow.com/api/mcp
- Claude: Settings, Connectors, Add custom connector.
- ChatGPT: add a connector with the same address.
- Cursor: add an MCP server entry
{"url": "https://llmeknow.com/api/mcp"}.
No client id or secret is needed. The assistant opens a sign-in page where an owner or admin picks the organisation, can set a 30-day spend cap, and approves. Each tool arrives with a description and the arguments it takes, so the assistant can find its own way. MCP tool names use underscores where the API uses dots (waves_run for waves.run). A good first check is to ask it to call campaigns_list.
Call the API from a script
An owner or admin creates a key under Settings, API keys. The key acts with the permissions of the member who created it.
GET https://llmeknow.com/v1/toolslists the tools the key may call, with descriptions and argument schemas.POST https://llmeknow.com/v1/tools/{name}runs one, with its arguments as a JSON object in the body.
Send the key as Authorization: Bearer llmk_... and a descriptive User-Agent such as my-agent/1.0. Requests with a bare library user agent (for example Python-urllib) are blocked at the edge with 403 error code: 1010. Scripts can also speak MCP to the same address with the key as the bearer token.
Errors come back as {code, message}, so a script can branch on code.
Running a wave costs credits
Reading data is free. Running a wave spends wallet credits, because every response is a real model call, so a wave never starts on a guess:
campaigns.estimatereturns the price and your wallet balance without spending anything.waves.runtakes that price back asconfirm_estimate_cents. If it is missing or the price has moved, the call answers 409 with the current estimate to confirm instead.- Poll
waves.statusevery 30 seconds or so, and read results once it reportsanalysis_ready.
A key or connector with a spend cap refuses paid work that could take its spending over the cap in a rolling 30 days. A wave it starts pauses before it can pass the cap, and counts its full spend limit until it finishes; after that only what it really cost counts.
Keep queries scoped
Each read has an 8 second budget. Scope analysis to one campaign or wave rather than the whole organisation, and prefer the analysis tools (analytics.entities, analytics.sources, analytics.narratives, results.export) over raw queries: they compute the dashboard's numbers and stay fast at campaign size. A read that outgrows the budget answers scope_too_large.
Revoke access
Every key and every approved connector is listed under Settings, API keys, with its last use and 30-day spend. Revoking one stops it at once. A wave it already started keeps running.