Mermaid to assets. Source code to maps. MCP for agents.
Three tools with complete input schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun pattern (render_*, generate_*) which is good. However, descriptions lack LLM-optimized guidance on WHEN to use each tool vs alternatives, and many parameters lack descriptions or have generic ones. No output schemas documented. Error handling not visible in provided code. Baseline: avg tool description ~180 chars (acceptable range 10-1024), but parameter descriptions are sparse or missing entirely.
Generate Mermaid diagrams from source code and render SVG/JPEG assets.
Render a .mmd/.mermaid file or tree to SVG/JPEG and optional PNG/ASCII artifacts.
Render Mermaid source text to SVG/JPEG and optional PNG/ASCII artifacts.
Output schemas not documented. LLMs cannot infer what fields are returned (SVG path? artifact metadata? error details?), forcing them to guess downstream tool compatibility.
Parameter descriptions missing or generic. 'source' in render_mermaid_text says 'Mermaid source text' but doesn't explain format constraints, max length, or what happens if invalid. 'langs' in generate_source_diagrams accepts 'string|array' but no description of valid language codes or array format.
No guidance on tool selection. All three tools render diagrams but differ in input (text vs file vs source code). Descriptions don't explain WHEN to call each, LLM must infer from names alone, risking wrong tool selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Parameter type inconsistency. 'langs' and 'diagrams' in generate_source_diagrams accept 'string|array' but schema shows type as array of strings. Unclear if LLM should pass 'typescript,python' or ['typescript','python']. No enum constraints on valid language/diagram types.
No error handling guidance. If Mermaid syntax is invalid, file not found, or rendering fails, what does the tool return? How should the LLM recover? No recovery hints or error categorization visible.