ConnectConnectChatGPT

MCP Client

ChatGPT

Connect ChatGPT through hosted Streamable HTTP MCP and browser OAuth with memory:read and memory:write scopes.

Prerequisite

Use an OpenAI app configuration that supports a remote MCP server and the hosted Streamable HTTP endpoint. Runtimes and prerequisites:

  • Concrete interface: ChatGPT web and desktop client (OpenAI Apps / Actions).
  • Endpoint: https://xmemo.dev/mcp.
  • Transport: Streamable HTTP (streamable-http).
  • Auth mode: OAuth with memory:read and memory:write scopes.
  • Account: Valid XMemo account at https://xmemo.dev.

Install / setup

In the ChatGPT client or OpenAI platform dashboard, register the hosted MCP URL and OAuth metadata for the remote connection:

  • Configure the hosted MCP URL in the app dashboard: https://xmemo.dev/mcp.
  • Request memory:read and memory:write at consent.
  • Do not add a bearer token to the app listing.

Set the credential

No key — complete browser OAuth. ChatGPT receives the credential through the OAuth grant; do not set XMEMO_KEY or add an Authorization header:

No XMEMO_KEY
Complete browser OAuth in ChatGPT

Generate / confirm XMEMO_AGENT_INSTANCE_ID

The reviewed ChatGPT OAuth listing has no client-side identity header. Do not invent or paste XMEMO_AGENT_INSTANCE_ID into the app configuration; confirm that attribution is managed by the OAuth grant for this client path.

Preserve the existing config block

Use the reviewed ChatGPT configuration block. Preserve its hosted URL, OAuth mode, and requested scopes; change only local dashboard values that the client requires:

{
  "servers": {
    "xmemo": {
      "type": "http",
      "url": "https://xmemo.dev/mcp"
    }
  }
}

Restart the client

Save the app configuration, close any stale MCP connection, and reopen the ChatGPT app or conversation so it loads the current OAuth metadata.

Test with a real recall call

Make the first MCP call read-only. This is an actual recall invocation, not a health-check placeholder, and it does not write memory.

recall({ query: "connection check", limit: 1 })

Expected response (literal shape)

A successful call returns the public ranked text shape below; the reference and content are real values from the authorized memory space.

### XMemo Memory Results:
1. Reference: <opaque-memory-id> | Location: <location>
   > <memory content>

First useful task: Synthetic memory lifecycle

Exercise the complete synthetic memory task inside ChatGPT:

  • 1. Save synthetic fact: Ask ChatGPT to call remember with content "Demo project timestamps use UTC." and path "projects/demo-onboarding/conventions".
  • 2. Stateless transition: Open a brand-new chat thread in ChatGPT to ensure no in-conversation memory carries over.
  • 3. Recall with source attribution: Ask ChatGPT to recall "demo project timestamp format". Confirm returned Reference and Location.
  • 4. Correct memory: Ask ChatGPT to call update_memory with the active ID, updating the convention to ISO 8601 formatting.
  • 5. Optional cleanup: Ask ChatGPT to call forget with the memory ID when testing concludes.

Capabilities and profile tools

ChatGPT has access to profile-qualified tools defined in the MCP documentation contract for chatgpt-public profile:

  • Core memory tools: remember, recall, update_memory, forget, read_memory, explain_memory, search_memory, recall_context.
  • Project and context tools: get_mcp_identity, get_project_summary, project, todo, update_state, record_event, restore_memory, analyze_memory_text, memory_overview.
  • Interactive workspaces: open_project_workspace, open_todo_board, open_ledger, ledger.

Limitations and boundaries

Operational boundaries and constraints for ChatGPT integration:

  • Workspace boundary: Memory access is strictly confined to the authorized user's workspace.
  • Skill support: ChatGPT runs tool calls remotely and does not execute standalone local Node.js skills.
  • OAuth session: Inactive OAuth sessions may expire periodically, requiring a one-click browser re-authorization.

Common Errors

ChatGPT-specific OAuth failures map to the real token endpoint responses:

  • invalid_grant — Authorization code is invalid or expired, or was already used: reconnect ChatGPT and authorize again.
  • invalid_target — The OAuth resource does not match this MCP server: restart the connection using https://xmemo.dev/mcp as the resource.
  • 403 insufficient_scope — The grant does not include memory:read or memory:write: approve the requested scope and reconnect.

Update and removal

Maintenance procedures for ChatGPT:

  • Update: Update the ChatGPT client or re-authenticate to refresh tool definitions.
  • Removal: Remove the XMemo connection in ChatGPT Settings -> Connected Accounts / MCP.

ChatGPT / OpenAI Apps SDK MCP configuration

Configuration file: OpenAI Platform app management dashboard

OAuth marketplace lane: configure the hosted MCP URL and OAuth metadata in the OpenAI app dashboard; never paste XMEMO_KEY or Bearer tokens into the listing.

{
  "mcpServers": {
    "XMemo": {
      "url": "https://xmemo.dev/mcp",
      "transport": "streamable-http",
      "auth": {
        "type": "oauth2",
        "resource": "https://xmemo.dev/mcp",
        "scopes": ["memory:read", "memory:write"]
      }
    }
  }
}

Client readiness

  • Evidence required
  • Marketplace pending
  • See /product/docs#client-capability-matrix; do not infer Certified/listed from OAuth readiness.

Source: Client capability matrix