sk_live_ key, answers on the same host,
charges the same prices and bills the same balance as the REST API. Every
priced capability in the API reference
is a tool, along with projects, assets, jobs, research, publishing and Sigma.
It is not every REST endpoint. Brands, products, autopilots and autopilot runs,
themes, trends, niches, viral content, topic monitors, webhook subscriptions,
workflows and agent runs are REST-only today — call them over HTTP. Every tool
has a REST twin on api.sigmora.org, deleting a project included.
An Idempotency-Key (the idempotencyKey argument on a tool) protects retries
on the door it was sent to. Retry a tool call as a tool call and an HTTP call as
an HTTP call; the same key sent once over MCP and once over HTTP is two calls.
Connect
${SIGMORA_API_KEY} stands for your
key, read from the environment; each host writes that reference its own way, so
use the exact configuration for your host from
Install in your agent.
Create the key in Settings → API keys.
The transport is stateless Streamable HTTP (JSON-RPC 2.0). The server supports
the 2026-07-28 protocol — including server/discover, routable request headers
and cache hints — and still accepts the 2025-06-18 initialization handshake.
Hosted clients (ChatGPT, Claude, Cursor and other OAuth-capable MCP hosts) can
connect with OAuth instead of a key. The protected-resource metadata
(RFC 9728, linked from the WWW-Authenticate challenge on a 401) names the
authorization server https://sigmora.org, which supports Client ID Metadata
Documents, dynamic client registration, PKCE (S256 only), private_key_jwt,
refresh-token rotation and revocation. The person signs in, picks one
workspace, and approves the scopes read, generate and publish; the token
then acts exactly like a key for that workspace on the MCP server and can be
disconnected in Settings → API keys. OAuth access tokens (sk_oat_…) are
for the MCP server only; the REST API at api.sigmora.org/v1 accepts sk_live_
keys. See Sigmora in ChatGPT.
Keep sk_live_ keys for local CLI configuration, load them from
SIGMORA_API_KEY, and do not commit them to a plugin or repository.
Install in your agent
Each section below is one of the 11 hosts the Sigmora agent kit supports: the configuration exactly as the kit ships it, and where it goes.The agent kit is not published yet, and its public repository (
mlsniperpro/sigmora-agent-kit) is not open yet. Until they are, paste the template for your host below: it is the same text the kit’s installer writes, and it works today. The plugin marketplaces work once the repository is public.Codex
Add this to your user config,~/.codex/config.toml (a project’s .codex/config.toml works too). Paste the block with its two marker lines; the installer only ever replaces what is between them.
~/.codex/config.toml (user config)
SIGMORA_API_KEY is set: the template only references the variable, so the key never goes in the file.
The Codex plugin carries the same server in its own plugin .mcp.json, next to the skills. Codex loads it when you install the sigmora plugin from the agent-kit marketplace (mlsniperpro/sigmora-agent-kit, once the agent-kit repository is public); you do not paste it into your user config:
plugin .mcp.json
Claude Code
Add this to.mcp.json in your project, or ~/.claude.json for every project. If the file already lists other servers, add the sigmora entry next to them.
.mcp.json
SIGMORA_API_KEY is set: the template only references the variable, so the key never goes in the file.
Or let Claude Code write the same entry. The single quotes keep the variable unexpanded, so the key never lands in the file:
OpenCode
Add this toopencode.json in your project, or ~/.config/opencode/opencode.json for every project. If the file already lists other servers, add the sigmora entry next to them.
opencode.json
SIGMORA_API_KEY is set: the template only references the variable, so the key never goes in the file.
Antigravity
Add this to.agents/mcp_config.json in your project, or ~/.gemini/config/mcp_config.json for every project. If the file already lists other servers, add the sigmora entry next to them.
.agents/mcp_config.json
Qwen Code
Add this to.qwen/settings.json in your project, or ~/.qwen/settings.json for every project. If the file already lists other servers, add the sigmora entry next to them.
.qwen/settings.json
Kimi Code CLI
Add this to.kimi-code/mcp.json in your project, or ~/.kimi-code/mcp.json for every project. If the file already lists other servers, add the sigmora entry next to them.
.kimi-code/mcp.json
SIGMORA_API_KEY is set: the template only references the variable, so the key never goes in the file.
DeepSeek Harness
Add this tocordis.patch.yml in your project. Paste the block with its two marker lines; the installer only ever replaces what is between them.
cordis.patch.yml
SIGMORA_API_KEY is set: the template only references the variable, so the key never goes in the file.
ZCode
Add this to.mcp.json in your project. If the file already lists other servers, add the sigmora entry next to them.
.mcp.json
SIGMORA_API_KEY is set: the template only references the variable, so the key never goes in the file.
For the plugin (the MCP server plus the Sigmora skills), import the agent-kit repository (mlsniperpro/sigmora-agent-kit, once the agent-kit repository is public) in ZCode’s Plugins screen.
CodeBuddy
Add this to.mcp.json in your project, or ~/.codebuddy/.mcp.json for every project. If the file already lists other servers, add the sigmora entry next to them.
.mcp.json
SIGMORA_API_KEY is set: the template only references the variable, so the key never goes in the file.
Cursor
Add this to.cursor/mcp.json in your project, or ~/.cursor/mcp.json for every project. If the file already lists other servers, add the sigmora entry next to them.
.cursor/mcp.json
Gemini CLI
Add this to.gemini/settings.json in your project, or ~/.gemini/settings.json for every project. If the file already lists other servers, add the sigmora entry next to them.
.gemini/settings.json
ChatGPT
ChatGPT connects when you sign in to Sigmora: no key, no file and no agent kit. Follow Sigmora in ChatGPT.Keep the tool context small
By default the server exposes every tool. Most agents are more reliable — and use less context — with a task-specific profile. Set it with a header next toAuthorization:
A profile limits what the agent sees; it is not a permission system. The server
still enforces it, so a tool outside the profile cannot be called by name, and
an unknown profile name is refused rather than falling back to
full.
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.
Tool schemas and prices come from the same catalogue as the API reference, so
tools/list and these docs always agree. Live prices are in capabilities_list.
For video work, call video_options before filling advanced fields. It exposes
the live TTS, course, chess, renderer and derivative registries. Use
video_catalog_domains and video_catalog_list to obtain exact catalogue ids,
then pass one to video_render. For a draft, set draft: true; when it is
done, call video_render_finalize with its jobId and projectId for the
full-quality render. Once a final
job is done, use video_shorts for platform-specific derivative scripts.
If jobs_get returns qa_failed, fetch artifacts.scriptReview for the
source-grounded release decision before revising and retrying.
Use video_provenance_verify with a manifest you extracted locally; never send
the video or image bytes to that tool.
Start or resume the project session
Create or select a project first, then callproject_session_start. It
idempotently binds that project and returns sessionId, projectId, and a
dashboard handoff for the same work. Pass that projectId to every capability
tool in the session. project_context_get restores the binding after a host
reconnect.
project_session_start requires the existing projectId and a stable
idempotencyKey. Send the host name, your client version, an opaque session id
and a privacy mode. artifacts_only is the safe default; conversation summaries
or full transcripts are stored only when the user chooses those modes.
Project media and local files
MCP carries stable references, never multi-gigabyte file bodies.
For a local file, use the
sigmora command from the agent kit. The agent kit is not
published yet (see Install in your agent); once it is, run
sigmora upload <path> --project <projectId> with SIGMORA_API_KEY set.
The helper computes the SHA-256, uploads straight to the signed storage URL (in multipart
batches for large files) and returns the asset and content ids. Without the
helper, open the project in the dashboard and upload there.
The helper also recovers interrupted uploads. After an expired upload URL, a
lost response, an uncertain completion or an idempotency conflict, it reads
GET /v1/assets/upload/status, which tells it to wait, retry the completion, or
prepare a fresh upload URL. The asset and content ids stay the same, and bytes
are never uploaded twice just because completion was uncertain. An upload that
cannot be resolved yet is reported as pending recovery, not as ready.
Two differences from HTTP
A tool call carries arguments, not headers, so two HTTP headers become arguments. Everything else — authentication, prices, error codes, projects and job polling — is identical.Agents and research
The server also exposes the workspace’s autonomous agents and research tools:create_agent defaults to draft-only autonomy: it produces drafts and publishes
nothing without review.
When to ask, when to proceed
The server never asks questions on its own. Whether to ask depends on who is listening:- A human is in the loop and a required choice is genuinely ambiguous (which clips, how long, which language): ask one short question before spending credits.
- You are unattended (scheduled, batched, fire-and-forget): nobody will answer, so make the best assumption from the workspace, finish, and state what you assumed. Stopping to wait turns a job into a hang.
projects_get, list_chat_threads and
get_chat_thread usually contain the answer.
Rules for agents
Four things that are easy — and expensive — to get wrong:- Spending is real. Every paid capability call debits a human’s credit balance and cannot be undone once it succeeds. Confirm before a batch.
- Retry with the same
idempotencyKey. Paid MCP tools and durable control writes refuse a missing key. 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_getuntilstatusisdone,cancelled,failed, orqa_failed. Never publish artifacts fromqa_failed; they are diagnostic evidence from a blocked release. awaiting_reviewis a person, not a delay. Polling will never advance it. Page the cut ids withjobs_proposal_get, obtain approval, then callvideo_edit_approve; otherwise hand the review to the dashboard.
llms.txt has the whole API in one plain
file, written for agents.