OpenAI image generation MCP server
Two tools with complete input schemas and reasonable descriptions, but several critical gaps reduce overall quality. Both tools have action verbs (generate_, edit_) and detailed parameter descriptions. However, descriptions lack clarity on error handling, recovery paths, and expected output structure. Parameters are well-typed with detailed constraints, but missing enums for constrained string fields (quality, size, output_format values are documented in descriptions but not as JSON Schema enums). Output schema documentation is absent, the return type `ImageContent | list[ImageContent] | dict` is vague and doesn't help LLMs plan downstream logic. Missing guidance on when to expect which return type, pagination limits (if applicable), and actionable error messages.
Edit an image with OpenAI model, save or display it. For saving, use the `output_dir` parameter.You can use one or more images as a reference to generate a new image, or edit an image using a mask(inpainting). For inpainting, if you provide multiple input images, the `mask` will be applied to the first image.
Generate an image with OpenAI model, save or display it. For saving, use the `output_dir` parameter.
Missing enum constraints for string parameters with fixed valid values. Parameters 'quality', 'output_format', 'size', 'background', and 'model' enumerate allowed values in descriptions (text) rather than as JSON Schema enums. LLMs cannot reliably extract and validate against textual enums, they will hallucinate values not in the list.
Output schema completely undocumented. Return type declared as `ImageContent | list[ImageContent] | dict` but no explanation of what triggers each variant, what fields are in the dict, or how pagination works. LLMs cannot reason about downstream tool chaining or field extraction.
No error handling guidance. Tool descriptions do not explain what errors are possible, how to recover, or when to retry. For example: What happens if the prompt violates OpenAI's usage policy? What if the API rate limit is hit? What if an image file in 'images' parameter is unreadable?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Missing input validation hints. Parameters like 'n' (1-10 for most models, only 1 for dall-e-3), 'size' (valid values differ by model), and 'quality' (vary by model) have model-dependent constraints documented only in text. No guidance on validation order or what error message to expect if constraints are violated.
edit_image requires 'images' array but no description of expected file formats, size limits, or what happens if mask and images dimensions don't match. Parameter description says 'Must be a supported image file' but does not list which formats are supported.
Tool descriptions do not state whether these operations have side effects or cost implications. Both tools call external APIs (OpenAI) which incur charges and should be marked as destructive/expensive in descriptions so agents understand the consequence of calling them.