MCP server for rendering diagrams using Eraser API
Single tool with clear action verb naming and complete input schema. Tool description is present but minimal (57 chars). All input parameters have types and descriptions. However, output schema is not formally documented in the definition, and error handling lacks recovery guidance for common failure modes (missing API token, API errors). The tool demonstrates good parameter constraint use (enums for theme/scale) but misses documentation of what fields the response contains.
Render a diagram using the Eraser.io API.
Output schema not formally documented. The tool returns a dict with 'success', 'message', and optionally 'image_data'/'image_url' fields, but this structure is not declared in the tool definition visible to LLMs. LLMs cannot reliably extract data from undocumented response shapes.
Tool description is 57 characters, brief but lacks context. Does not state WHEN to use this tool vs. alternatives, WHAT happens to the rendered output, or WHAT 'return_file' actually returns (file content as base64? file path?). Description should expand to 100-200 chars with explicit guidance on use cases.
Error handling does not guide recovery. When ERASER_API_TOKEN is missing, the response is {'success': False, 'message': 'Error: ERASER_API_TOKEN not found in environment'}. This tells the LLM the call failed but not what to do next. Should suggest: 'Configure ERASER_API_TOKEN in the server environment variables before retrying.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Parameter descriptions lack actionable format guidance. 'diagram_type' description says 'Type of diagram (e.g., 'sequence-diagram', 'cloud-architecture-diagram')', the phrase 'e.g.' signals an example list, not an exhaustive set. LLMs may hallucinate unsupported diagram types. Should declare: 'Diagram type (enum: sequence-diagram, cloud-architecture-diagram, flowchart-diagram, entity-relationship-diagram)' or use a formal enum constraint in the schema.
The 'code' parameter description does not clarify encoding or content validation. It says 'Diagram code in Eraser.io syntax (with proper line breaks and escaping)' but does not explain: What happens if the code is malformed? What escape sequences are supported? Is raw newline \n allowed or required? The code shows preprocessing (convert \n to actual newlines), but the parameter description should document this upfront.