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
| Area | ChatGPT behavior | What to do |
|---|---|---|
| File parameters | Attaching 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 preview | ChatGPT 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 jobs | ChatGPT 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. |
| Notifications | MCP 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 status | On 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 likereference_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, orfiles(upload, data=…)with a base64/data-URI — then pass the returned URL orasset_id. Existing library assets already have anasset_idyou 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/qatoolset, 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.