10xDotIn Developer Docs

ChatGPT MCP Setup

Connect ChatGPT/OpenAI either through a per-handle hosted MCP endpoint or through the shared MCP app URL using OAuth-issued bridge credentials.

ChatGPT MCP Setup

Use this guide to connect ChatGPT/OpenAI either through one handle-specific hosted MCP endpoint or through the shared MCP app URL. The public setup is OAuth-first and the runtime now treats connector bootstrap as automatic: handle resolution, OAuth recovery, scope checks, and bridge refresh happen through the shared bootstrap workflow before the requested handle workflow runs.

If you are still deciding whether ChatGPT/OpenAI MCP is the right invocation surface for the job, start with Hosted Tools & Skills Invocation.

What this setup uses

  • One connector per handle.
  • Hosted MCP on https://{handle}.mcp.10x.in/mcp.
  • Optional shared app URL on https://ai.10x.in/mcp.
  • OAuth authorization code flow with protected-resource metadata.
  • Short-lived OAuth-issued bridge credentials in mcpv1_... format behind the MCP runtime.

Prerequisites

  1. A handle such as acme.
  2. Access to that handle in 10x.
  3. A connector configuration surface in ChatGPT/OpenAI that supports OAuth or bearer challenge discovery.
  4. Optional but recommended: access to https://app.10x.in so you can confirm the endpoint shown under Integrations -> MCP & Tools before registering the connector.
Use caseRequired OAuth scopes
MCP session + tool discoverymcp.connect, skills.read
Linkslinks.read, links.write
Analytics exportanalytics.read
Site/page launchpages.read, site.deployments.read, site.deployments.write
Campaign detail structure pagespages.read, pages.write
Webhookswebhooks.read, webhooks.write
Knowledge queryknowledge.query
Context Store connector readscontext_store.search
Context Store refreshcontext_store.manage

MCP URL to register

Use one of these URLs:

  • Shared app URL: https://ai.10x.in/mcp
  • Canonical hosted URL: https://{handle}.mcp.10x.in/mcp
  • Compatibility fallback: https://ai.10x.in/mcp/{handle}/mcp

Use the shared app URL when you want one public ChatGPT/OpenAI app for every user. Users with more than one handle will pick the handle during OAuth, and the connection stays bound to that one handle after approval.

Use the canonical hosted URL when you want one connector per handle with the handle encoded directly in the URL. The compatibility path is fallback-only for rollout windows such as DNS/TLS propagation.

The same endpoint should be visible in the control plane under Integrations -> MCP & Tools. If the admin surface and your connector configuration disagree, fix the handle selection first.

Why custom-domain MCP is not supported

Mapped custom domains only cover public site and redirect traffic. MCP stays on the platform hostname because the runtime currently depends on platform-managed infrastructure for:

  1. Stable wildcard DNS and TLS for per-handle MCP hosts.
  2. OAuth protected-resource metadata and authorization-server discovery on known environment domains.
  3. Deterministic host-to-handle routing and session isolation without per-customer wildcard delegation.

If MCP were moved onto your custom domain, 10x would need to provision and maintain additional wildcard DNS, certificates, OAuth discovery metadata, and routing rules for every customer domain. That is not part of the supported product path today.

How auth works

When ChatGPT/OpenAI calls the MCP endpoint without a bearer token:

  1. POST /mcp returns 401.
  2. The response includes WWW-Authenticate: Bearer ... resource_metadata="https://{handle}.mcp.10x.in/.well-known/oauth-protected-resource/mcp".
  3. ChatGPT/OpenAI fetches protected-resource metadata and the OAuth authorization server metadata.
  4. The user signs in on the first-party 10x auth page and approves scopes for that handle.
  5. The OAuth token exchange returns a short-lived bridge bearer in mcpv1_... format.
  6. MCP sessions and tool calls use that bridge bearer. It is not shown in PAT management.
  7. The bootstrap workflow smoke-checks tool discovery and resumes the original request once the connector is ready.

Register in ChatGPT / OpenAI

  1. Confirm the endpoint in 10x

    Open https://app.10x.in, navigate to your handle, and review Integrations -> MCP & Tools. Confirm the hosted MCP endpoint shown there before you register the connector.

  2. Open connector setup

    Create a new MCP connector/app in ChatGPT or OpenAI Apps.

  3. Copy the exact ChatGPT callback URL

    In the ChatGPT app/connector management page, copy the exact OAuth callback URL shown for that connector. It will look like https://chatgpt.com/connector/oauth/{callback_id} and must be registered exactly as shown.

  4. Set server URL

    Use https://ai.10x.in/mcp for the shared app experience, or https://{handle}.mcp.10x.in/mcp for one connector per handle. Use the compatibility fallback only when hosted DNS/TLS or rollout state is not ready yet.

  5. Use OAuth

    Choose OAuth/challenge-based auth if the UI offers it. Do not use custom username/password forms.

  6. Authorize one handle

    Complete the redirect to 10x, pick the handle, and approve the requested scopes.

  7. Save and test tools/list

    Confirm the connector loads tools for that handle. After the first successful auth, later workflow runs reuse the resumable bootstrap state automatically.

Bootstrap script

Use the helper script to fetch protected-resource metadata, perform dynamic client registration, and print the connector values you need:

Handle-specific connector:

node scripts/setup-chatgpt-mcp-oauth.mjs \
  --handle <handle> \
  --redirect-uri https://chatgpt.com/connector/oauth/<callback_id>

Shared app URL:

node scripts/setup-chatgpt-mcp-oauth.mjs \
  --gateway \
  --redirect-uri https://chatgpt.com/connector/oauth/<callback_id>

The script prints either the canonical hosted MCP URL or the shared gateway MCP URL, depending on whether you pass --handle or --gateway.

In production, the script should discover https://ai.10x.in as the OAuth authorization server for https://{handle}.mcp.10x.in/mcp. If discovery returns a legacy shared API host for prod, the edge/runtime rollout is still serving stale auth metadata and ChatGPT will not auto-populate OAuth fields correctly.

The script prints:

  • MCP server URL
  • OAuth authorization server
  • dynamically registered client_id
  • registered redirect URIs
  • default scopes

Use one --redirect-uri flag per callback you want allowlisted. There is no default ChatGPT callback in 10x anymore. Copy the exact value from ChatGPT for every new connector you create.

Example prompts

  • "Launch a webpage on my handle."
  • "List recent deployments for acme."
  • "Create a redirect from /sale to my checkout."
  • "Export my attribution report."
  • "Query handle knowledge for refund policy."

Troubleshooting

SymptomLikely causeFix
401 missing_bearer_tokenOAuth was not completedRe-open the connector and finish OAuth
401 invalid_token_formatConnector cached a non-MCP bearerRe-authorize the connector
401 session_handle_mismatchExisting MCP session was opened for a different handleCreate one connector per handle
OAuth callback fails with invalid_target on https://ai.10x.in/mcpThe shared gateway MCP resource is not registered on the deployed auth server yetDeploy the shared gateway OAuth support, then retry the OAuth flow
403 insufficient_scopeApproved scopes do not cover the requested toolRe-authorize with the missing scopes
OAuth reaches token exchange, then fails on callback allowlistingThe connector's exact ChatGPT callback URL was not registered in the OAuth client's redirect_urisCopy the exact callback URL from ChatGPT, re-run scripts/setup-chatgpt-mcp-oauth.mjs --handle <handle> --redirect-uri <exact-callback> or repair the existing client_id, then re-authorize
OAuth fields stay empty in ChatGPTThe advertised authorization_servers host is wrong for the environmentRe-check discovery. Production should advertise https://ai.10x.in, not a legacy shared API host.
hosted URL fails but compatibility path worksDNS/TLS or edge rollout is incompleteUse https://ai.10x.in/mcp/{handle}/mcp temporarily

Migration Note

PAT-based ChatGPT/OpenAI MCP setup is deprecated and no longer part of public setup guidance. For non-MCP automation tokens, use API Tokens and Automations.

Updated Jun 19, 2026