A WeRead MCP Server - provides access to WeChat Reading (微信读书) functionality including bookshelf management, book search, notes/highlights retrieval, and book reviews
Server defines 4 tools with explicit schemas visible in src/index.ts. All tools have descriptions (10-105 chars avg ~68 chars). Schemas are present and mostly complete with typed properties. However, several parameters lack descriptions, output schemas are not documented, and error handling is minimal. Tool names follow verb_noun convention appropriately. The implementation is basic but functional.
Get popular reviews for a specific book
Get all highlights and notes for a specific book, organized by chapter
Get all books in the user's bookshelf with comprehensive statistics and categorization information
Search for books in the user's bookshelf by keywords and return matching books with details and reading progress
Output schemas not documented. Tools return data but LLMs cannot plan downstream calls without knowing the response structure (fields, types, nesting). For example, get_bookshelf returns bookProgress, books, archive but these structures are not defined in the tool response schema.
Parameter descriptions incomplete or missing. get_book_best_reviews 'synckey' parameter has description 'Sync key for pagination' but lacks context on expected values or purpose. search_books 'exact_match' and 'include_details' flags lack guidance on when to use each mode.
No error handling or recovery guidance. CallToolRequestSchema handler uses try-catch but returns no guidance to LLM on how to recover from API failures, missing books, or invalid IDs. Agents cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No pagination limits documented. search_books defaults to max_results=5 (good) but get_bookshelf and get_book_notes_and_highlights have no stated result limits. Unbounded lists risk context explosion.
Tool names could be more specific. 'get_book_notes_and_highlights' combines two concerns (notes AND highlights). Consider 'get_book_highlights' and 'get_book_notes' as separate tools so agents can request each independently.
highlight_style parameter uses union type [integer, null] but lacks enum or constraint documentation. LLMs cannot infer valid integer values (e.g., 0-10? 1-5?). Provide explicit enum or range in description.
Parameter naming inconsistency. Tools use 'book_id' (snake_case) but the server capabilities define tools in mixed casing. Ensure consistent naming across all parameters (use snake_case throughout).