MCP server for generating images using Replicate's Flux Schnell model
Single tool with acceptable naming and documentation, but significant gaps in schema completeness, parameter descriptions, error guidance, and output documentation. The tool name 'generate_image' follows verb_noun convention (+), description is present and >20 chars (+), but the input schema lacks descriptions for the 'prompt' parameter (-), output schema is completely undocumented (-), and error handling returns raw API responses without guidance to the LLM (-). No input validation, no pagination support, no structured output definition. The server implements only basic error handling via try/catch with Axios-specific logic, but does not guide the LLM toward recovery paths.
Generate an image using the Flux Schnell model on Replicate
Parameter 'prompt' in generate_image has no description in the input schema. LLMs cannot infer what text prompt should contain (length limits, style constraints, content restrictions, examples of good vs bad prompts).
Output schema is completely undocumented. The tool returns a JSON text field with status/output/error fields, but the LLM has no schema definition to know what to extract or what structure to expect. Agents will struggle to parse the nested JSON and chain downstream operations.
Error handling returns raw Replicate API error messages without recovery guidance. When image generation fails (e.g., 'NSFW content detected'), the LLM receives the error text but no hint on what to do next: retry with a different prompt? Call a different tool? Give up? This violates the recovery-guide pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
No input validation for prompt parameter. The tool checks 'typeof args.prompt !== string' but does not validate length, character restrictions, or content policies. An LLM could pass a multi-megabyte string or characters that Replicate rejects, causing silent failures or timeouts.
Tool description does not state what the tool returns or mention potential error cases (NSFW rejection, timeout, invalid API token). Description is 108 chars, adequate length, but lacks context on WHEN to use it (e.g., 'Call this when the user asks for image generation') and prerequisites (e.g., 'Requires REPLICATE_API_TOKEN environment variable').
No mention in the description that this tool modifies external state (creates images on Replicate, may incur costs). Agents need to know this is a write operation with irreversible consequences.
Replicate API error response is stringified JSON and returned as plain text. The LLM must parse unstructured JSON strings, which is error-prone and wastes tokens. Should return structured objects with typed fields (e.g., {status: string, output: string[], error?: string}).