MCP server that provides tools to fetch latest books and articles from external APIs
Two tools with basic verb-noun naming (get_new_books, get_new_articles_by_keyword). Tool descriptions are present but minimal (18-20 chars each), below the 50-200 char LLM-optimized baseline. Input schemas are properly defined with string types and required flags, but parameter descriptions are generic and lack context about expected formats, constraints, or when to use each tool. No output schema documentation. Error handling returns text messages but lacks recovery guidance or actionable next steps. No tool annotations (readOnlyHint, etc.). Overall structure is functional but falls short of production quality.
Get latest articles published by keyword
Get latest books published in the last 30 days
Tool descriptions are too short (18-20 chars). LLM-optimized descriptions should be 50-200 chars and explain WHAT the tool does, WHEN to use it, and what it returns. Current descriptions lack context for tool selection.
Parameter descriptions are generic and lack constraints. 'The genre of books to the user is interested in' does not specify valid genres, format, or examples. 'The keyword of the articles' lacks guidance on search scope or expected input format.
No output schema documentation. Callers cannot predict response structure (JSON fields, types, pagination). LLMs must guess what fields to extract, risking parsing errors and wasted tokens.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Error messages lack recovery guidance. 'Error fetching articles from arXiv' tells the LLM nothing about whether to retry, ask the user, or try a different tool. No error classification (retryable vs fatal).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are read-only and idempotent, but this is not declared in the schema, forcing LLMs to infer safety properties.