MCP server for OpenAI-compatible image generation with support for image editing, batch processing, and local artifact management
Server has 25 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (initialize_, inspect_, update_, generate_, edit_, etc.). Descriptions are present and substantive (avg ~150 chars), exceeding the 10-char minimum. However, several critical gaps reduce quality: (1) Many parameter descriptions are minimal or missing context about constraints and dependencies. (2) Output schemas are declared but often generic (z.record(z.any()), z.object().passthrough()). (3) Error handling is present but lacks recovery guidance, most errors return toolError(error) without actionable next steps. (4) Some tools expose complex internal state (handoffId patterns, projectBindingId) without clear user-facing rationale. (5) Tool composition is reasonable but some tools (prepare_host_image_import, stage_host_image_import, finalize_host_image_import) form a tightly coupled sequence that could be simplified.
Submit a batch of image generation and edit operations for processing
Bind an image generation project to establish artifact repository and configuration context
Cancel queued items in this job. Running items, including atomic candidate groups, may still finish and incur charges; their successful originals remain recoverable. Does not delete images.
Close an editor session and release associated resources
Edit an existing image with specified modifications and delivery options
Export an image artifact to a local file path within the project
Output schemas use z.record(z.any()) and .passthrough() extensively, providing no type guidance to LLMs about returned fields. LLMs cannot plan downstream tool calls or extract structured data reliably.
Three-step host image import workflow (prepare → stage → finalize) is tightly coupled and requires exact sequencing. No clear error recovery path if staging fails after preparation. Consider consolidating or adding explicit state validation.
Error handling returns generic toolError(error) without actionable recovery guidance. LLMs receive stack traces or raw error messages instead of 'Try X next' or 'This is retryable' classification.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
Commit or abort a prepared host image handoff without accepting another path, prompt, or source declaration.
Generate images using configured provider and model with specified parameters and delivery options
Retrieve the manifest for a completed batch operation
Retrieve delivery receipt and post-processed artifacts for a delivery operation
Retrieve the current state of an open editor session
Read a durable image job and an ordered page of up to 10 item results. Poll the same job until done; a query timeout never resubmits or cancels generation. Read all nextOffset pages and collect successful image IDs for final delivery with render_image_results. Intermediate previews may be included again in the final set using the same IDs. Unknown outcomes must not be regenerated automatically.
Import a local image file into the artifact repository
Create an API Key or ChatGPT image configuration template at the fixed user path without overwriting an existing file. Protect user and optional project configuration directories with a local .gitignore containing only *; the API Key template prefers api_key_env.
Return redacted user configuration, optional project overrides, and fixed paths without returning api_key or other credentials.
List available image generation models and their capabilities
Observe runtime diagnostics including working directory, plugin root, and client capabilities
Open an interactive canvas editor session for image annotation and editing
Freeze one ChatGPT image generation or canvas edit intent before invoking the Codex host image generation capability. Edit preparation returns the clean parent image as model-visible content.
Render a collection of image artifacts for display with optional grid layout and preview generation
Report host observations and errors for diagnostic and audit purposes
Resume only never-dispatched items and local processing with saved originals. Never resubmit failed or unknown image requests. Requires the original configuration; does not change provider, model, authentication, or route.
Reveal an image artifact in the file system explorer
Snapshot the exact local path returned by the current Codex host image generation call into its prepared handoff.
Update allowlisted user or project configuration fields and protect the target configuration directory with a local .gitignore containing only *. User-level api_key writes require an explicit request and remain redacted; project scope rejects credentials and non-allowlisted fields. Rebind the project after an update.
Parameter descriptions lack constraint details. E.g., 'count' in generate_image says 'Number of images to generate (1-10)' in description but no min/max in schema. 'size', 'quality', 'aspectRatio' have no enum or format constraints documented.
Internal identifiers (projectBindingId, handoffId, annotationId) use opaque patterns (pbind_*, handoff_*, ann_*) without user-facing rationale. Tool descriptions do not explain why these IDs are necessary or how users obtain them.