Skip to content

ChatGPT / OpenAI MCP compatibility

Framehood works as a remote MCP server for any MCP-aware client, including ChatGPT (Developer Mode / connectors) and other OpenAI Apps SDK surfaces. ChatGPT's MCP client has a few constraints that differ from Claude's — this page is a compatibility matrix so you know what to expect and how to work around it. None of it requires special configuration; it's the same https://mcp.framehood.ai/mcp endpoint and the same tools.

Compatibility matrix

AreaChatGPT behaviorWhat to do
File parametersAttaching a file in the chat does not populate a tool's media field: ChatGPT only forwards an attachment to a param declared via OpenAI's openai/fileParams metadata, which Framehood's tools don't use (their media fields are plain strings). A known ChatGPT mobile-app bug can also send a bare string where a file-reference object is expected.Give the tool a URL, library asset_id, or data-URI string instead of a chat attachment — the same as any other MCP client. To bring a file in, use files(import_remote) / files(upload) first, then pass the returned URL/asset_id. See How to pass files from ChatGPT below.
Inline media previewChatGPT does not reliably render an inline image/video preview from a URL inside a tool result.Expect a clickable link in the response, not an inline thumbnail — open it to view the result.
Long-running jobsChatGPT does not hold open a long synchronous wait for slow generations (video, upscaling, training).Submit the job, then poll get_status(job_id=…) until it reaches succeeded/failed. Submit → poll is the standard pattern for every client, but treat it as required (not optional) on ChatGPT.
NotificationsMCP notification support is limited on ChatGPT — don't expect a push update when a job finishes.Poll get_status instead of waiting for a notification.
Tool-invocation statusOn long-running tools (image/video/audio/qa), ChatGPT shows the short status text Framehood attaches while the call runs and once it returns (e.g. "Generating video…", then a submitted/queued note — remember async jobs return a job_id to poll, they aren't finished when the call returns).Informational only — nothing to configure; other clients ignore this text.

How to pass files from ChatGPT

Framehood's media tools (image, video, audio, qa) accept a file as a URL, a library asset_id, or a data-URI — see what you can pass as a media reference.

Attaching a file in the ChatGPT conversation does not hand it to a Framehood tool. ChatGPT only forwards an attachment to a tool that declares it via OpenAI's openai/fileParams metadata, which these tools do not — the media fields (image_url, video_url, …) are plain string parameters. So a chat attachment won't populate image_url, and asking ChatGPT to "use the file I attached" will fail or send a wrong-shaped value.

Instead, give the tool a URL or asset_id (works from every client, ChatGPT included):

  • Already have a public URL? Pass it straight into the field (image_url, video_url, audio_url, or a string element of an array field like reference_images / tracks / elements.*).
  • Have a file only in ChatGPT / on disk? Bring it into Framehood first — files(import_remote, url=…) to pull a hosted URL, or files(upload, data=…) with a base64/data-URI — then pass the returned URL or asset_id. Existing library assets already have an asset_id you can reuse.

(If you do see an unexpected bare string arrive in a file field, that's the ChatGPT mobile-app file-reference bug noted above — pass a URL/asset_id explicitly rather than an attachment.)

Good to know

  • Credits, pricing, and the model catalog behave identically from ChatGPT — see Credits & plans. Framehood never exposes provider names or upstream costs on any surface, ChatGPT included.
  • Everything above is about the MCP transport and client behavior, not Framehood-specific limits — the same image/video/audio/qa toolset, actions, and parameters documented in the tools reference apply unchanged.
  • For the endpoint and general client setup, see the MCP server guide. Auth is OAuth 2.1 only on ChatGPT — the connector signs in through the OAuth flow and sends the access token it receives; ChatGPT can't present a Framehood API key (Bearer), so the API-key option in the MCP guide doesn't apply here.

Framehood