Skip to main content
Glama
corith37

ChatGPT Subscription MCP

by corith37

ChatGPT Subscription MCP

Ask OpenAI questions and generate or edit images from Claude Desktop, using your ChatGPT subscription through the official Codex local interface. No OpenAI API key required.

Claude launches the bridge and its Codex backend automatically. You do not need to keep ChatGPT, Codex Desktop, or a terminal window open. Your computer and Claude must remain running while a job finishes.

This is an unofficial local integration, not an OpenAI or Anthropic product. It provides Codex-backed conversations and built-in image generation; it does not expose every ChatGPT feature or existing ChatGPT web conversations. Plan eligibility, workspace controls, and normal Codex usage limits still apply.

Open source and community

All project-owned code is public under the MIT license: the MCP server, Claude setup helper, tests, extension manifest, build scripts, and CI. There is no private edition or separate proprietary bridge component. You can fork it, change it, and submit improvements.

Start with the contributor guide and roadmap. Use Discussions for questions and design ideas, Issues for reproducible bugs and feature proposals, and pull requests to contribute changes. Setup, clearer errors, image previews, and cross-platform testing are especially welcome.

The development guide maps the code and explains how to work without a subscription. The release guide documents how the downloadable extensions are built from public source. Third-party components keep their own licenses; OpenAI's hosted models and services are external dependencies and are not included in this project's license. See third-party notices.

Related MCP server: gpt-image-2-combined

Install in Claude Desktop

Desktop extension

  1. Download the .mcpb matching your operating system and CPU architecture from Releases. Never install a Windows bundle on macOS or an x64 bundle on ARM.

  2. In Claude Desktop, open Settings → Desktop app → Extensions → Advanced settings → Install Extension. Older Claude versions place Extensions directly in Settings.

  3. Select the downloaded bundle. It includes the bridge and its pinned Codex runtime.

  4. Ask Claude: “Check chatgpt_status. If I need to sign in, call chatgpt_login and give me the login link.” Open the link and sign in with your ChatGPT account. Existing Codex ChatGPT sign-in is reused.

  5. Ask Claude to generate an image or ask OpenAI a question.

Claude must allow local desktop extensions, and its extension Node runtime must support Node 22 or later. There is no API key field. A custom extension is not the same as a remote connector: do not paste localhost into Claude's web connector dialog.

If no release bundle matches your platform, install from source below. Bundles are unsigned custom extensions, not reviewed directory listings.

From source: Windows, macOS, Linux MCP clients

Install Node.js 22 or later and Git, then:

git clone https://github.com/corith37/chatgpt-subscription-mcp.git
cd chatgpt-subscription-mcp
npm ci
npm run doctor

If doctor reports that ChatGPT sign-in is required:

npm run login

Then install the Claude Desktop configuration:

npm run setup

Fully quit and reopen Claude Desktop. Setup preserves other MCP servers and preferences, backs up changed files, and uses absolute paths. On Windows it handles both the ordinary and Microsoft Store Claude config locations. Re-running setup is safe. Keep the cloned folder in place; rerun setup after moving it.

To select a config explicitly:

npm run setup -- --config /absolute/path/to/claude_desktop_config.json

On Windows PowerShell, use npm.cmd if your execution policy blocks npm.ps1. Claude Desktop availability and local extension support vary by OS; the server itself also works with other local MCP clients on Linux.

Other MCP clients / Claude Code

Configure a local stdio server:

{
  "mcpServers": {
    "chatgpt-subscription": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/chatgpt-subscription-mcp/src/cli.js"]
    }
  }
}

Windows JSON paths need escaped backslashes (or forward slashes). Run the Node entry directly, rather than npm start, to keep stdout free of npm messages. Claude Code can register this same command using its local MCP configuration. This project does not provide a public HTTP server or a claude.ai/mobile remote connector.

Use it

Examples to ask Claude:

  • “Ask OpenAI to critique this product idea, then compare its answer with yours.”

  • “Generate a square watercolor illustration of a fox reading beside a window.”

  • “Edit C:/Users/me/Pictures/portrait.png: replace the background with a pale blue studio backdrop.”

  • “Continue that OpenAI conversation and ask for three alternatives.”

  • “Cancel the image job that is still running.”

Tool

Purpose

chatgpt_status

Check login, models, limits, and data location

chatgpt_login

Start the official browser login and return its URL

chatgpt_ask

Submit a question or conversation follow-up

chatgpt_generate_image

Generate or edit an image, optionally with local references

chatgpt_job

Poll a job and retrieve text, images, and a conversation ID

chatgpt_cancel

Request cancellation

chatgpt_read_image

Retrieve a generated image by its job and image IDs

Submission tools return immediately with job_id. Claude should call chatgpt_job with wait_seconds: 20 until completed, failed, cancelled, or interrupted. Image generation can take several minutes. Polling does not submit the prompt again. One generation runs at a time, with up to 16 queued requests per bridge process.

Pass conversation_id from a previous job to continue it. Conversations and completed job results survive a restart. A restart interrupts in-flight jobs; they are never silently retried. Cancellation cannot refund usage already consumed.

Image requests accept up to four local PNG/JPEG/WebP references, each up to 20 MiB. References must already exist on the same computer as the bridge: an attachment inside Claude is not necessarily a local file path. Describe desired size, transparency, composition, and edits in the prompt; these are model instructions, not guaranteed API parameters. Generated images up to 4 MiB are returned inline. Larger images are saved locally, with their full paths returned.

How it works

flowchart LR
    C[Claude Desktop] -->|local MCP stdio| B[Node bridge]
    B -->|local app-server JSON-RPC| X[Bundled Codex CLI]
    X -->|ChatGPT sign-in| O[OpenAI subscription services]
    O --> X
    X -->|text and image bytes| B
    B -->|job result and inline image| C

The bridge uses the documented Codex app-server interface and native imageGeneration events. It does not scrape chatgpt.com, automate a hidden browser, extract cookies, copy access tokens, or fall back to billable API calls. The backend owns sign-in and token refresh. See the design and feasibility notes for the options considered and remaining limitations.

Settings and local data

Environment variable

Default / behavior

CHATGPT_MCP_DATA_DIR

~/.chatgpt-subscription-mcp; use an absolute path

CHATGPT_MCP_MODEL

Account default from model/list; optional override

CHATGPT_MCP_CODEX_PATH

Bundled Codex; optional absolute native executable path

CODEX_HOME

Codex default ~/.codex; controls its sign-in and state location

Setup carries these explicit environment settings into the Claude configuration. Do not put API keys or passwords there. The source install uses the pinned @openai/codex dependency and does not upgrade or replace your globally installed CLI.

The data directory contains completed responses, image files, copied reference inputs, job metadata, and bridge-to-Codex conversation mappings. Codex separately retains its normal conversation/authentication state. Treat both directories as private. Data is not automatically deleted; close the bridge before removing its local data directory. Deleting it does not delete Codex's own saved conversations. Uninstalling the extension or removing its config entry stops future use; it does not log you out of other Codex clients.

Troubleshooting

Symptom

Next step

No tools in Claude

Fully quit/reopen Claude, check local extension policy and logs, run npm run doctor

Not signed in / API-key login detected

Use chatgpt_login or npm run login with ChatGPT sign-in

Model unavailable

Run doctor; remove a stale model override; update the bridge for a newer pinned runtime

No image returned

Read the job error; account eligibility, service refusals, and limits still apply

Job stays running

Poll the same ID; cancel if needed; the bridge times out after ten minutes

interrupted after restart

Review available results; explicitly submit a new request if desired

Reference image unavailable

Supply an absolute path to a local image the bridge can read

Image exceeds inline size

Open the returned local path; the original file is retained

Login link stops working

Keep Claude open, request a fresh login link, and complete it on this computer

Development and verification

npm ci
npm test
npm audit
npm run bundle

Tests use a fake backend and a real MCP stdio client; they require no account. CI tests Node 22/24 on Windows, macOS, and Linux. npm run bundle creates a platform-specific .mcpb and SHA-256 checksum under dist/. Bundling never includes your login, generated images, or local configuration.

Optional live checks consume your plan limits:

npm run smoke
npm run smoke -- --image --edit

On 2026-10-26, the full live flow was verified on Windows x64 with ChatGPT Plus and Codex 0.164.0: text, conversation continuation, image generation, image retrieval, and editing a reference image. Other platforms are covered by automated CI, but a passing unit test does not establish live account eligibility. Upstream app-server behavior is version-dependent and experimental; dependencies are pinned and the lockfile is committed.

See SECURITY.md, CONTRIBUTING.md, and third-party notices. The bridge is MIT licensed; bundled components retain their own licenses.

Available Tools

7 tools
chatgpt_askA

Ask the subscription-backed OpenAI assistant a question or continue its conversation. Uses plan limits. Returns a background job; poll chatgpt_job for the answer.

NameRequiredDescriptionDefault
modelNoOptional model ID from chatgpt_status. Defaults to the account default.
promptYesThe complete question, generation prompt, or image-edit instructions.
conversation_idNoContinue a conversation returned by this bridge.
reference_imagesNoAbsolute local paths to PNG, JPEG, or WebP reference images. Only attach files the user intends to share.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover openWorldHint, idempotentHint=false and destructiveHint=false. The description adds genuinely useful behavior not in the annotations: subscription-backed auth, 'uses plan limits' (quota constraint), and the asynchronous contract returning a background job that must be polled via chatgpt_job.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then the quota caveat, then the async follow-up. Every sentence carries a distinct fact with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async tool with no output schema, the description supplies the critical missing piece: it returns a job, not an answer, and chatgpt_job is how to retrieve it. Minor gaps remain (whether the job handle is returned inline, whether conversation_id is echoed back), but the agent can call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents prompt, model, conversation_id, and reference_images including the 4-image cap. The description only gesture at the conversation parameter via 'continue its conversation', adding no format or constraint detail beyond the schema — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Ask the subscription-backed OpenAI assistant a question') and adds the continue-conversation mode. It does not explicitly distinguish itself from chatgpt_generate_image, even though reference_images makes that boundary relevant, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the two modes ('a question or continue its conversation') and the follow-up instruction to poll chatgpt_job. There is no explicit when-not guidance or named alternative for image generation versus text prompting, which an agent must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chatgpt_cancelA
Idempotent

Cancel a queued or running generation. Usage already consumed is not refunded. Poll the job to confirm terminal status.

NameRequiredDescriptionDefault
job_idYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotent, non-destructive and open-world, so the description adds real value beyond them: that consumed usage is not refunded and that cancellation is asynchronous and must be confirmed by polling. It does not state whether cancellation succeeds for already-terminal jobs, which is the remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, action first, then the cost caveat, then the required follow-up. Every sentence carries distinct information with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, this covers the essentials: what is canceled, the billing consequence, and the verification step. Only the origin and format of job_id is missing for an agent to act without opening the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden, but it never mentions job_id — neither its format (the schema pattern is the only clue) nor where the agent obtains it (presumably from chatgpt_ask/generate). With a single self-describing required parameter the gap is modest, but it is not compensated for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Cancel a queued or running generation') and scopes it to two job states, which separates it from generate/ask siblings. It doesn't name chatgpt_job or chatgpt_status explicitly, so the sibling boundary is only implied by the 'poll the job' sentence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Queued or running' implicitly excludes finished jobs and 'Poll the job to confirm terminal status' gives a follow-up path, so usage is inferable. However, no alternative tool is named and there is no explicit guidance on what to do if the job is already terminal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chatgpt_generate_imageA

Generate a real image, or edit reference images, with built-in OpenAI image generation using ChatGPT subscription limits. Describe size, composition, transparency and edits in the prompt. Returns a background job; poll chatgpt_job. No image is promised until the job completes.

NameRequiredDescriptionDefault
modelNoOptional model ID from chatgpt_status. Defaults to the account default.
promptYesThe complete question, generation prompt, or image-edit instructions.
conversation_idNoContinue a conversation returned by this bridge.
reference_imagesNoAbsolute local paths to PNG, JPEG, or WebP reference images. Only attach files the user intends to share.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, it discloses that generation uses ChatGPT subscription limits, returns a background job, and promises no image until completion. It does not cover failure modes, rate-limit specifics, or output retrieval beyond polling chatgpt_job.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and appropriately sized. The final sentence about no promised image slightly overlaps with the polling instruction, but it reinforces an important async expectation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async image-generation tool with no output schema, it covers the essential workflow: generate/edit, prompt content, background job, and polling. It could be more complete by mentioning how to retrieve the resulting image or referencing chatgpt_read_image.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters are already documented. The description adds useful prompt guidance about describing size, composition, transparency, and edits, but it does not explain model, conversation_id, or reference_images beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: generate or edit images. It distinguishes itself from text siblings by naming image generation and editing, and it points to the async workflow via chatgpt_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly establishes the tool for image generation/editing and tells the agent to poll chatgpt_job after invocation. It lacks explicit when-not guidance or a direct comparison to sibling tools like chatgpt_ask or chatgpt_read_image.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chatgpt_jobA
Read-only

Retrieve a generation job, response text, conversation ID, and image paths. Completed small images are returned inline. Poll running jobs; do not resubmit the original request.

NameRequiredDescriptionDefault
job_idYes
wait_secondsNo
include_imagesNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description adds useful behavioral details: completed small images are returned inline, and running jobs should be polled rather than resubmitted. These points clarify runtime behavior that the annotations alone do not convey. It still does not mention rate limits or authentication requirements, but the added context is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with zero redundancy. It front-loads the retrieval purpose and then adds operational constraints and return behavior in an efficient sequence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately mentions returned fields and inline images. However, for a tool with three parameters at 0% schema description coverage, the missing explanation of wait_seconds and include_images leaves the definition incomplete for an agent to invoke it optimally.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate but does not. It never mentions the job_id, wait_seconds, or include_images parameters directly, leaving wait_seconds and include_images completely unexplained. The inline image statement loosely touches include_images behavior but is not explicit parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this tool retrieves a generation job along with its response text, conversation ID, and image paths. It distinguishes itself from a generic status tool by specifying the job-specific output. However, it does not explicitly contrast itself with the sibling chatgpt_status or chatgpt_ask tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Poll running jobs; do not resubmit the original request' gives a clear usage context for this tool. However, it does not name alternative tools or explain when to use chatgpt_status versus chatgpt_job, leaving some ambiguity for an agent deciding between siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chatgpt_loginA

Begin ChatGPT browser sign-in when the user asks to connect their account. Returns a URL for the user to open; never ask for a password or token in chat.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint and destructiveHint=false, so the description carries the real behavioral load: it discloses that the call returns a URL to open and adds a security constraint ('never ask for a password or token in chat'). It stops short of stating whether a login attempt expires, can be repeated, or is superseded by chatgpt_cancel.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and its trigger, followed by the return behavior and the credential-safety warning. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly fills the gap by explaining the return value (a URL for the user to open) and the credential-handling constraint. It lacks only lifecycle context — what happens on repeat calls and how it relates to chatgpt_status/chatgpt_cancel.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and there is nothing the description could add on parameter semantics. The schema is empty and fully consistent with a no-argument login trigger.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Begin ChatGPT browser sign-in') and names the concrete output ('Returns a URL'), which clearly separates it from siblings like chatgpt_status, chatgpt_cancel, and chatgpt_ask. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition: 'when the user asks to connect their account.' However, it names no exclusions or alternatives — for example, it doesn't say to check chatgpt_status first, or that chatgpt_cancel aborts a pending login, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chatgpt_read_imageA
Read-only

Return a previously generated image inline using job and image IDs. Only reads images produced by this bridge, up to 4 MiB per image.

NameRequiredDescriptionDefault
job_idYes
image_idYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: results are returned inline (not as a link), only bridge-produced images are readable, and there is a 4 MiB per-image ceiling — a constraint an agent cannot see anywhere else.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero padding, with the core action and the retrieval identifiers front-loaded and the constraints trailing. Nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read with no output schema, the description covers the essentials: what is returned (image content inline) and the two hard limits (bridge-origin, 4 MiB). It omits failure behavior for unknown or expired IDs, which is the only meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning and it does not. It names 'job and image IDs' but never explains where those IDs come from (presumably chatgpt_generate_image or chatgpt_job), that both are required, or what the identifier format is — even though the schema imposes a strict pattern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return a previously generated image inline') plus the identifiers used to address it. The word 'previously' implicitly separates it from the sibling chatgpt_generate_image, but the differentiation is left for the agent to infer rather than stated outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Only reads images produced by this bridge' clause tells the agent the scope of valid inputs, which is useful. However, it never says when to call this versus chatgpt_generate_image or chatgpt_job, and gives no guidance on what to do if the image was not produced here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chatgpt_statusA
Read-only

Check subscription login, available text models, usage limits, and bridge setup without generating content.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description then adds the non-obvious behavioral guarantee that the call does not consume generation/quota ("without generating content"), which is exactly the extra context an agent needs before using it as a cheap pre-flight check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence: verb first, then the list of coverage areas, then the differentiator. Nothing redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the burden of describing what comes back, and it does so at the category level (login state, models, usage limits, bridge setup). A hint about the response shape or what a failure means would push this to a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description correctly implies a call with no arguments and enumerates the status areas being probed, leaving no ambiguity about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Check") and enumerates the exact resources it reports on: subscription login, available text models, usage limits, bridge setup. The phrase "without generating content" separates it from the generation siblings (chatgpt_ask, chatgpt_generate_image) without needing the schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames a diagnostic/read-only context ("without generating content"), which tells an agent this is the non-consuming probe to run before or instead of generation calls. It stops short of explicitly routing among siblings, e.g. not saying to use chatgpt_login when this reports a logged-out state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedchatgpt_ask
    • First observedchatgpt_cancel
    • First observedchatgpt_generate_image
    • First observedchatgpt_job
    • First observedchatgpt_login
    • First observedchatgpt_read_image
    • First observedchatgpt_status

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

Each tool targets a distinct phase of the bridge workflow: status, login, cancel, ask, generate_image, job polling, and read_image. The only mild overlap is between chatgpt_job (returns job metadata, text, and image paths) and chatgpt_read_image (returns an image inline), but the descriptions clearly delineate their purposes.

Naming Consistency4/5

All tools share the chatgpt_ prefix and snake_case formatting, which is highly predictable. The only minor deviation is that some names are action verbs (ask, generate_image, read_image) while others are nouns (status, job), but the convention remains readable and consistent overall.

Tool Count5/5

Seven tools is well-scoped for a subscription bridge, covering authentication, generation, polling, cancellation, and image retrieval without bloat or obvious redundancy.

Completeness4/5

The surface covers the full core lifecycle: login, status checks, content generation (text and image), job polling, cancellation, and image retrieval. Minor gaps exist, such as no explicit logout or conversation-listing/management tool, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables Claude to directly invoke OpenAI's chat models (GPT-4o, GPT-4o-mini, o1-preview, o1-mini) through a Model Context Protocol integration, allowing users to query and compare responses from different AI models within Claude Desktop.
    1
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An unofficial bridge that lets Claude Code control local macOS applications through an existing OpenAI Computer Use installation by launching the signed Codex client and translating MCP compatibility.
    26 npm
    13
    MIT