Skip to main content
Sigmora runs an MCP server, so an assistant you already use can work inside your workspace instead of you copying results between tabs. It is not a second product with its own login, and it is not a smaller version of the API: it takes the same sk_live_ key, answers on the same host, runs the same handlers, and bills the same balance. Every endpoint in the API reference is a tool.

Connect

Mint the key in Settings → API keys in any workspace you belong to. Transport is Streamable HTTP (JSON-RPC 2.0, protocol revision 2025-06-18); a Firebase ID token works too, for first-party clients.
https://docs.sigmora.org/mcp is a different server — this documentation site’s own, which searches these pages. The one above does the work.

Tool names

A tool is named for its operation, with the dot replaced by an underscore. The tool list, its request schemas and its prices are generated from the same catalogue this documentation is generated from, so tools/list and the reference cannot disagree. Prices are also live in capabilities_list.

Start here, not with a capability

Every capability requires a projectId — the container its output is filed in. Call projects_create first.

Two differences from HTTP

A tool call carries arguments, not headers, so two things that are headers over HTTP are arguments here. Everything else — auth, prices, error codes, project scoping, job polling — is identical, because it is the same code underneath.

Agents and research

The same server also carries the workspace’s autonomous agents, which have no REST equivalent: create_agent defaults to draft-only autonomy: it produces drafts and publishes nothing without review.

If you are the agent reading this

Four things that are easy to get wrong and expensive to get wrong:
  • Spending is real. Every capability call debits a human’s credit balance and cannot be undone once it succeeds. Confirm before a batch.
  • Retry with idempotencyKey. A repeat with the same id and the same arguments replays the stored result instead of doing — and charging for — the work twice. The same id with different arguments is refused, not answered.
  • An async tool hands you a job id, not an answer. Read it with jobs_get until status is done or failed.
  • awaiting_review is a person, not a delay. Polling will never advance it. Tell the user instead of waiting.
llms.txt is the same material in one plain file, if you would rather read the whole map at once.