An mcp server that generates images based on image prompts
Single tool with adequate schema and basic description. Tool naming is action-oriented (generate_image), input schema is complete with typed parameters and descriptions. However, output schema is not documented in the tool definition itself (only returned as a response, not declared upfront). Parameter descriptions are minimal and lack context about prerequisites, constraints, or error recovery. No error handling guidance provided. The tool performs a write operation (calls external API, writes file) but description does not explicitly state this has side effects. Missing documentation around API key injection, rate limits, and what happens on generation failures.
Generate an image from a prompt.
Tool description does not declare mutability or side effects. 'Generate an image from a prompt.' does not warn that the tool writes files to disk, calls external API, or has irreversible consequences.
Parameter descriptions lack actionable detail. 'prompt' and 'imageName' descriptions are minimal (under 100 chars total). Missing: constraints on prompt length, valid characters for imageName, what happens if imageName conflicts with existing file, format expectations.
Output schema not declared in tool definition. Tool returns {uri, type, mimeType} but this structure is not documented in the inputSchema or in a separate outputSchema field. LLM cannot plan downstream usage without seeing response structure.
No error handling guidance. Tool can fail if OPENAI_API_KEY is missing, OpenAI API call fails, or disk write fails. No recovery instructions provided to LLM. Errors are not caught or formatted with actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 40 | - | v1 |
API key injected via environment variable (process.env.OPENAI_API_KEY) is correct, but no documentation of this requirement in tool description. LLM has no visibility into whether preconditions are met.
Tool name does not indicate scope or resource affected. 'generate_image' is clear, but no indication this writes to Desktop/generated-images/ or that it modifies local filesystem. For a stateless LLM, this is a surprise side effect.