Docs · Connect

Origin MCP

Origin MCP brings Origin's platform tools (media generation, game publishing, characters and discussions, the asset library, the knowledge base, analytics) into your agent with one address and a browser sign-in.

Address

The Origin MCP address is https://mcp.origingame.ai/mcp. It is a remote MCP server (Streamable HTTP), named origin in your client. Connecting Origin MCP and publishing games are free; generating images, audio, video and 3D is charged to your Origin balance at each model's price.

Origin MCP offers platform tools only, no model or chat tool. To have your agent use Origin's models, see Connect your agent and the model API.

Install in your client

Pick your client and follow its steps to add the address and sign in. Every client takes three steps: add the address, sign in to Origin in the browser, start using it.

  1. Step 1 ·Add Origin

    Run this in a terminal to add Origin MCP for all your projects.

    claude mcp add --transport http --scope user origin https://mcp.origingame.ai/mcp
  2. Step 2 ·Sign in in the browser

    Start Claude Code, type /mcp, select origin and choose Authenticate. The browser opens Origin’s sign-in page; sign in and approve.

    /mcp
  3. Step 3 ·Start using it

    Type /mcp again; once origin shows connected, ask for what you want in plain words.

The full step-by-step guides with copyable commands are on the Origin MCP page. To set up several agents at once, use the installer in a terminal, or Origin Kit for a graphical app or on Windows.

Once connected, your agent shows origin and its tools, and you can ask in plain language, for example "Use Origin to generate a 16:9 pixel-art forest level background, then a main character portrait on a transparent background".

Sign-in and authorization

Browser sign-in

Origin MCP is an OAuth 2.1 protected resource, so a client that supports remote MCP sign-in needs only the address:

  1. A request without sign-in gets 401, and its WWW-Authenticate header points to https://mcp.origingame.ai/.well-known/oauth-protected-resource.
  2. That metadata names the authorization server https://origingame.ai/identity/v1 and the scopes create:read and create:write.
  3. The client opens the browser with PKCE; you sign in to Origin and approve.
  4. The client receives a short-lived access token (valid for one hour) and renews it itself.
ScopeAllows
create:readReads: discovery, status, your games, releases, tasks, assets and analytics
create:writeEverything in create:read, plus billable generation and publishing writes

A call that needs a scope the grant lacks answers 403 insufficient_scope; approve the larger scope in your client rather than switching credentials.

Headless use

CI, scripts and clients without OAuth send an account API token (starts with og-, created under Access) or a device credential in the Authorization header:

Get an API token
claude mcp add --transport http --scope user origin https://mcp.origingame.ai/mcp \
  --header "Authorization: Bearer $OG_API_KEY"

Other clients set the same header, Authorization: Bearer og-..., in their remote server configuration. Never put the token in prompts, project files, URLs or game code. The installer and Origin Kit set up a revocable device credential only for agents that cannot sign in through the browser.

Revoke access

On the Access page, agents that signed in through the browser appear under "Connected apps" with their permissions and last use; clients set up with a device sign-in appear under "Signed-in devices". Revoking one leaves your other agents and your account API token untouched.

How the tools are organized

Origin MCP lists three discovery tools first, then every operation as its own typed tool:

  • docs: browse, search and read the public guides page by page.
  • search: find operations by domain, name or keyword; returns the current input schema, the effect (read, write or billable) and the related guide.
  • execute: compose several operations in one bounded run with origin.call(name, args). operations lists the operations this run may call; it is not proof that the user approved them.

Clients with tool search can call an operation such as generate_image directly; other clients compose operations through execute. Both paths run the same handlers, permission checks and audit. Example execute arguments:

{
  "operations": ["deploy_list"],
  "code": "async () => await origin.call('deploy_list', {})"
}

Read an operation's actual schema with search before calling it; don't guess parameter names from a guide. Irreversible operations such as deploy_delete, deploy_discard_release and game_leaderboard_reset carry destructiveHint, so clients should confirm them with you first.

Domains

DomainCoversExample tools
generateImage, music, sound effect, speech, video, 3D and motion generation; balance and usagegenerate_image, image_cutout, generate_music, generate_video, generate_3d, generate_balance
deployPublishing and updating games, release rollback, storefront artwork, operating live games, a starter projectdeploy_create, deploy_update, deploy_status, deploy_releases, deploy_generate_artwork, sdk_scaffold
universePublic search, characters, remixes and lineage, channels, discussionsuniverse_search, character_create, game_remix, channel_create, discussion_post
aigccCover, upload and publication of an AIGCC event entryaigcc_begin, aigcc_generate_cover, aigcc_publish, aigcc_status
assetsSearch and download images, 3D, audio, HDR and fonts from the asset libraryassets_search, assets_search_3d, assets_detail, assets_download
knowledgeSourced gameplay and genre design knowledgegameplay_search, gameplay_get, genre_browse, concept_compare
registryReusable code modulesregistry_search, registry_list, registry_get
analyticsAccount-scoped game funnels, version comparisons and workflow run analysis (read-only)analytics_game_funnel, analytics_compare_game_versions, analytics_run_summary

The complete, current list of operations is whatever search returns. When a domain is temporarily unavailable, search names it in unavailable instead of returning empty results.

Guides

docs({ id }) reads one of these guides; docs({}) lists them all and docs({ query: "upload" }) searches by keyword.

idCovers
onboardingConnect and authenticate
credentialsOAuth sign-in and scopes, keys for headless use, billing reads
unified-toolsUse docs, search and execute
game-developmentDevelop a game that deploys cleanly
sdkPlayer protocol 2: talk to the Player
local-filesLocal files, uploads, downloads and the optional CLI
assetsFind and install assets
generationGenerate media and resume jobs
publishingPublish and recover releases
universeCharacters, remix, discovery and discussion
aigccPublish an AIGCC event entry
knowledge-registryResearch game design and reuse code
analyticsRead game and workflow analytics
troubleshootingDiagnose connections and recover safely

Long jobs

For a client that declares the MCP Tasks extension (io.modelcontextprotocol/tasks), a direct call of generate_video, generate_3d, generate_tripo_3d, generate_speech, generate_motion, deploy_create or deploy_update that starts a new job answers with a task handle instead of the job's first status.

  • Poll with tasks/get every 2 to 10 seconds (follow the returned pollIntervalMs); a handle is valid for 24 hours.
  • When the job is done, tasks/get returns the same result as the synchronous status call, media included.
  • Clients without the extension check jobs with generate_get_tasks or wait with generate_wait_tasks (up to 30 seconds per call).
  • Calls inside execute and aigcc_publish are always synchronous.

Limits

execute runs in an isolated sandbox with no filesystem, network or credentials:

ItemLimit
Code size32 KB
Operation calls per run32
Each operation argument or result1 MB of JSON
Final returned JSON256 KB
Sandbox memory32 MiB
Execution time2 seconds of active execution, 10 minutes elapsed

Don't inline build ZIPs or large images into code; use the upload flow in the local-files guide. Stopping the sandbox does not undo a write that already started: each returned call is marked started, completed, failed or unknown, so check the state before retrying.

Legacy per-domain endpoints

/generate/mcp, /deploy/mcp, /aigcc/mcp, /knowledge/mcp and /registry/mcp on mcp.origingame.ai are deprecated in favour of /mcp. Until 2026-12-31 they keep working, and every response carries Deprecation, Sunset and a Link header pointing to https://mcp.origingame.ai/mcp; after that they answer HTTP 410 (endpoint_retired). Access tokens from browser sign-in work on /mcp only.

If your agent still has origin-assets, origin-generate, origin-deploy, origin-aigcc, origin-knowledge or origin-registry, re-run the installer: it removes the old entries it wrote and keeps only origin.

Troubleshooting

What you seeWhat to do
The browser sign-in does not openStart it by hand: /mcp then Authenticate in Claude Code, codex mcp login origin for Codex, Connect in Cursor's MCP settings. If it still fails, check that your default browser opens origingame.ai and update the agent to its latest version.
401, invalid or revoked tokenSign in again with the right account, or reconnect through the installer or Origin Kit. Don't extract credentials from another program's configuration.
503 Identity unavailableCredential verification is temporarily down; the credential is not revoked. Try again later.
403Check the account and who owns the target game; insufficient_scope means you need to approve a larger scope.
429 rate_limitedWait Retry-After seconds, then repeat only reads or calls marked retryable.
unavailable in a search result is not emptyThat domain is temporarily unavailable; discover again later and don't repeat a billable operation because of it.
outcome_unknownThe write or charge may have happened. Check its state with the saved ID (for example deploy_status, generate_get_tasks) before anything else; never retry blindly.
Old and new tool names both appearRe-run the installer; it removes the old entries and reports any it kept.

When you contact support, include the operation name, the time, the task or operation ID and the HTTP status; never include tokens, cookies or signed URLs.