Lead agents
Agents that find people asking for what you sell and draft replies, billed in runs
A lead agent has one job on one platform. Give it a brief and it scans for conversations, judges each post against the brief, drafts replies in your voice and fills a queue you approve. Lead agents bill in runs from your plan, as they always have, and never use credits.
| Endpoints | /api/v1/agents, /api/v1/agents/{id}/runs, /api/v1/runs/{id}, /api/v1/leads?agent_id= |
| MCP tools | smore_list_agents, smore_create_agent, smore_update_agent, smore_run_agent, smore_get_run, smore_cancel_run, smore_list_leads |
| Scopes | agents:read, agents:write, runs:start, runs:read, runs:cancel, leads:read |
| Billing | Runs from your plan. A run that is out of runs answers 402 no_runs_remaining |
List agents
curl -s https://app.makesmores.com/api/v1/agents \
-H "Authorization: Bearer $SMORE_API_KEY"
Create an agent
curl -s https://app.makesmores.com/api/v1/agents \
-H "Authorization: Bearer $SMORE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Buyer research",
"brief": {
"who": "B2B founders",
"signals": "Asking for help finding customers",
"never": "Job seekers",
"goal": "Find useful conversations"
}
}'
brief takes only who, signals, never and goal. job and platform default to find_leads and x. Creating an agent is not idempotent; after an uncertain answer, list your agents before you retry.
Start a run and read its leads
curl -s -X POST "https://app.makesmores.com/api/v1/agents/$AGENT_ID/runs" \
-H "Authorization: Bearer $SMORE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"idempotency_key": "buyer-research-2026-10-24"}'
Repeating a run with the same idempotency_key returns the same run with created: false and reused: true. Read progress with GET /api/v1/runs/{id} and stop a run with POST /api/v1/runs/{id}/cancel.
curl -s "https://app.makesmores.com/api/v1/leads?agent_id=$AGENT_ID&limit=50" \
-H "Authorization: Bearer $SMORE_API_KEY"
Lead pages hold 1 to 100 leads, default 50. Follow next_cursor until it is gone. Leads are ordered by the source post's time, so a page is not a frozen snapshot of a running scan.
Errors
| Status | Code | Meaning |
|---|---|---|
| 402 | no_runs_remaining, plan_limit, agent_limit | Your plan's limits. Credits do not lift them |
| 403 | insufficient_scope | The key lacks the agent or run scope |
| 409 | run_conflict, agent_conflict | The run or agent changed under you; read it and retry |
| 429 | rate_limited | Wait for Retry-After |
See examples.