MCP server that exposes subscription-only powers of Codex (ChatGPT) and Claude Code — image generation, live web search, page fetch — to any agent, by spawning the official CLIs. No API keys.
Server exposes 7 tools with complete Zod schemas and detailed descriptions. Naming follows verb_noun convention (codex_generate_image, claude_web_search). Descriptions are substantive (100-250 chars), explaining WHAT, WHEN, and prerequisites. However, several parameters lack descriptions (e.g., codex_edit_image.instruction has only min(3) constraint, no description text). Output schemas are not documented, LLMs cannot predict response structure. Error handling uses a generic guard() wrapper that returns {ok, code, message} but lacks recovery guidance or error classification. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels (WRITE vs READ_ONLY). Parameter descriptions sometimes reference examples ('e.g. gpt-6-astra') which LLMs may reuse literally.
Fallback: run an arbitrary task with the subscription Claude Code (read-only tools by default; set allow_edits for file changes). Returns the final answer, turns and list-price cost.
Fetch one URL with Claude Code's WebFetch (server-side fetch, 15-min cache, handles JS-light pages) and answer a question about it or summarize it. Cheaper than a search.
Live web research using Claude Code's built-in WebSearch (and WebFetch to read pages). Returns a concise answer plus source URLs and the list-price cost. Independent from the Codex path — use both when cross-checking matters.
Edit an existing image with a natural-language instruction (change background, remove/add objects, restyle, make transparent). Optional mask: transparent areas are redrawn. Output is a new PNG next to the source unless out_path is given.
Generate a raster image (PNG) with OpenAI gpt-image-2 through the Codex CLI, billed to the ChatGPT subscription. Use ONLY when a real bitmap is needed (photo, illustration, texture, mockup, transparent cutout) — not for icons/diagrams that can be SVG/HTML. Slow (30–90 s) and quota-heavy (~3–5× a text turn); one call per image.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Tools return text(obj) wrapping JSON but no schema is declared.
Missing parameter descriptions. codex_edit_image.instruction has only Zod constraint (min 3 chars), no description text. LLMs cannot infer what 'instruction' means without explicit guidance.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Tools are marked WRITE or READ_ONLY in comments but not in schema. LLMs cannot determine safety/idempotency without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Fallback: run an arbitrary agent task with the subscription Codex (default read-only sandbox). Useful when the company relay is down or when GPT-6 subscription behaviour is specifically wanted. Returns the final message and token usage.
Live web research using OpenAI's native web_search tool inside Codex (GPT-6 class model). Returns a concise answer plus source URLs. Good for English/tech topics and very recent events. Not available on the company relay — this is the subscription-only path.
Error handling lacks recovery guidance and classification. guard() returns {ok: false, code, message} but does not categorize errors as retryable/user-fixable/fatal or suggest next steps.
Example values in descriptions may be reused literally by LLMs. codex_run.model describes 'e.g. gpt-6-astra, gpt-5.6-sol', LLMs may pass these exact strings in real calls instead of adapting to actual available models.