A Model Context Protocol server built with Go that provides tools for managing a books database, including listing, creating, and deleting books. It also exposes weather resources and greeting prompts.
Three tools with complete schemas and basic descriptions, but significant gaps in parameter documentation and error handling. Tool names follow verb_noun convention (list-, create-, delete-) which is good. Descriptions are present but brief (10-30 chars), below the 50-200 char LLM-optimized baseline. Parameters lack descriptions in several cases (e.g., 'id' in delete-book has no description of what happens when empty). No output schemas documented. No error recovery guidance. Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are present but not formalized as toolAnnotations in the MCP protocol.
To create a new book.
To delete one or several existing books.
To list one or several existing books.
Tool descriptions are too brief (10-30 chars). LLM-optimized descriptions should be 50-200 chars and answer WHAT, WHEN, and any prerequisites. Current descriptions lack context for tool selection.
delete-book parameters lack descriptions. The 'id' parameter has no explanation of behavior when empty; 'genre' description contains typo ('bo books' instead of 'no books'). Parameter descriptions are critical for LLM reasoning.
No output schemas documented. LLMs cannot plan downstream calls or extract data without knowing what fields to expect from each tool response.
No error handling or recovery guidance. Tools do not indicate what to do on failure (e.g., if delete-book matches no books, should the agent retry or ask the user?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are present in metadata but not formalized as MCP toolAnnotations (readOnlyHint, destructiveHint, idempotentHint). Protocol-level annotations enable proper agent safety policies.