MCP server for Tanebi API - list, get, and create ideas
Three tools with clear verb-noun naming (list_ideas, get_idea, create_idea) and reasonable descriptions (100-150 chars). All tools have input schemas with Zod validation and type definitions. However, parameter descriptions are minimal (10-30 chars), lacking actionable guidance on constraints, formats, and dependencies. Output schemas are not formally documented, responses are formatted as text rather than structured objects. Error handling is generic (API errors logged as text) with no recovery guidance. Missing tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles.
Create a new idea on Tanebi. Content is split into paragraphs (separated by blank lines) and stored as lines.
Get detailed information about a specific idea, including its content lines and reactions.
List ideas from Tanebi. Returns summaries with title, stage, author, and counts.
Parameter descriptions are too brief (10-30 chars) and lack actionable constraints. 'Page number (default: 1)' does not explain valid range, behavior at boundaries, or when pagination is needed. 'Items per page (default: 20, max: 100)' mentions max but not min or typical use cases.
Output schemas are not documented. Tools return formatted text strings rather than structured objects with typed fields. LLMs cannot extract specific fields (idea_id, title, stage) for downstream tool calls without parsing unstructured text.
Error handling is generic. apiRequest() throws raw API errors ('API request failed: 404 ...') with no recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal. No actionable error messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Missing tool annotations. create_idea is destructive (WRITE risk) but lacks destructiveHint annotation. list_ideas and get_idea are read-only but lack readOnlyHint. Annotations help LLMs reason about safety and retry logic.
create_idea accepts optional 'content' parameter but description does not explain paragraph/heading syntax clearly. 'Paragraphs are separated by blank lines. Lines starting with # become headings.' is vague, does '# Title' create one heading or multiple? What about '## Subheading'?