MCP server for Anna's Archive - search and retrieve books, papers, and documents
Three tools with clear verb-noun naming (search, get_details, get_download_url) and documented schemas via schemars. All parameters have type definitions and descriptions. However, tool descriptions are brief (34 - 72 chars), below the 50 - 200 char LLM-optimized baseline. Output schemas are not documented, callers cannot predict response structure. Error handling returns generic messages without recovery guidance. No parameter constraints (enums, ranges) despite opportunities (e.g., page should have min/max). Missing idempotency and composition guidance.
Get detailed metadata for an item by its MD5 hash
Get a fast download URL for an item (requires ANNAS_ARCHIVE_API_KEY environment variable)
Search Anna's Archive for books, papers, magazines, comics, and other documents
Tool descriptions are too brief (34 - 72 chars vs. 50 - 200 char baseline). LLMs cannot determine when to select each tool or distinguish get_details from get_download_url without reading parameter names.
Output schemas are not documented. Callers cannot predict response structure (fields, types, pagination). Agents must infer from examples or trial-and-error.
Error messages are generic ('Search failed: {e}', 'Failed to get details: {e}'). No recovery guidance, LLM cannot determine if error is retryable, user-fixable, or fatal.
Parameter 'page' in search tool lacks constraints (min/max). No guidance on valid range, default behavior, or total page count. LLM may pass invalid page numbers.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
get_download_url requires ANNAS_ARCHIVE_API_KEY but does not document what happens if key is missing or invalid. No fallback or clear error message.