An MCP server for a thinking map application that manages nodes, themes, briefs, attachments, and insights on a collaborative board
Server has 7 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (read_*, create_*, add_*, update_*, ask_). Descriptions are present but brief (avg ~60 chars, below the 194-char baseline). Input schemas are well-formed with types and required fields. However, output schemas are not documented, LLMs cannot infer what fields to expect from responses. Error handling and recovery guidance are absent. No parameter descriptions for complex nested objects (e.g., 'themes' array in create_themes lacks detail on theme object structure). ask_user tool is unusual, it blocks execution waiting for user input, which violates stateless request handling in current MCP spec.
Add one or more nodes (ideas, questions, answers, insights) to the map
Ask the user one or more questions and wait for their answers
Create one or more themes (groupings) on the map
Read an attachment (image, text, or PDF) from the map
Read the brief document attached to the map, optionally a specific section
Read the current state of the map, optionally as a delta since a prior revision
Update an existing node on the map
Output schemas not documented. LLMs cannot infer response structure (fields, types, pagination). Forces agents to guess what data is available after each call.
Complex parameter objects lack detailed descriptions. 'themes' in create_themes and 'nodes' in add_nodes are arrays but no schema shown for array element structure (required fields, constraints, examples).
ask_user tool blocks execution waiting for user input. This violates stateless request handling (current MCP spec 2026-07-28). Should use Multi-Round-Trip Requests (result 'input_required') instead.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2025-06-18+ | v2 |
No error handling or recovery guidance. Tools lack descriptions of failure modes, retryability, or what the LLM should do if a call fails (e.g., 'node not found, try read_map first').
Tool descriptions are too brief (avg 55 chars vs 194-char baseline). Missing context on WHEN to use each tool and dependencies between tools (e.g., 'Call read_map first to get node IDs for update_node').