Reference MCP server for cookie-authenticated web systems without APIs. Demonstrates session jar, retry/backoff, schema-drift detection.
Six tools with complete input schemas and descriptions. Naming follows verb_noun pattern (get_, list_, add_, mark_, search_). Descriptions are adequate (50-150 chars) but lack dependency hints and recovery guidance. Parameters are typed with enums where appropriate (status filter). Error handling is sophisticated, typed errors map to user-facing text with context (cookie age, retry-after). However, output schemas are not documented in the tool definitions themselves; responses are inferred from code. No tool annotations (readOnlyHint/destructiveHint). Risk classification is present in metadata but not exposed to LLM.
Add a new item to your ReadShelf reading list by URL.
Inspect the local session cookie's age, source, and expiry warning state. Does not contact upstream.
Fetch full detail for a single ReadShelf item by id.
List items in your ReadShelf reading list, optionally filtered by status.
Mark a reading-list item as finished.
Search ReadShelf items by title, author, or tag.
Output schemas not documented in tool definitions. LLM cannot predict response structure (fields, types, pagination). Responses are inferred from code only.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk metadata exists in code but is not exposed to the LLM via tool definitions.
Descriptions lack dependency hints and recovery guidance. E.g., 'list_reading_list' does not mention that search_library is available for filtering by content.
Error messages reference 'READSHELF_SESSION_COOKIE' environment variable by name, but no tool or documentation explains how to set it or where to obtain a valid cookie.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
search_library limit parameter defaults to 10 but max is 50. No guidance on when to increase limit or how pagination works if results exceed limit.