Personal Reading Life Assistant - connects your library, reading tracker, and bookshelf into a seamless AI-powered reading assistant. Integrates with Hardcover (reading tracker), Libby/OverDrive (library), and Open Library.
BookLife has 7 tools with reasonable naming (verb_noun pattern) and descriptions present for all tools. However, critical gaps exist: parameter descriptions are sparse or missing for many inputs (e.g., hardcover_update_reading_status lacks descriptions for 'book_id', 'status', 'progress', 'rating'), output schemas are not documented anywhere in the provided code, and error handling guidance is absent. The 'info' tool is a discovery mechanism but lacks clarity on what it returns. Pagination parameters in hardcover_get_my_library are documented but output structure is not. No tool annotations (readOnlyHint/destructiveHint) despite clear WRITE vs READ_ONLY risk classifications. Tool descriptions average ~120 chars (within baseline 194), but parameter-level documentation is severely underdeveloped.
Add a book to your Hardcover library
Get your reading list from Hardcover. Progressive detail levels for token efficiency. Example: {"detail": "summary"} - quick stats (200 tokens) Example: {"status": "reading"} - currently reading (list)
Update reading status for a book in Hardcover
Get help and discover BookLife capabilities. Progressive discovery system for tools, workflows, and categories. Example: {} - Show overview Example: {"category": "hardcover"} - List Hardcover tools Example: {"tool": "libby_place_hold"} - Detailed tool help Example: {"workflow": "find_and_read"} - Step-by-step workflow guide
Get your current holds from Libby
Get your current loans from Libby
Output schemas completely undocumented. No tool returns a documented structure, LLMs cannot plan downstream calls or extract required fields. hardcover_get_my_library claims to return 'list' detail but structure is invisible; libby_get_loans/holds return nothing documented.
Parameter descriptions missing or incomplete. hardcover_update_reading_status has 4 parameters with NO descriptions in the schema shown. hardcover_add_to_library 'place_hold' boolean lacks explanation of side effects. LLMs cannot infer parameter semantics from names alone.
No tool annotations despite clear risk classifications. Tools marked WRITE (hardcover_update_reading_status, hardcover_add_to_library, libby_place_hold) should declare destructiveHint=true. READ_ONLY tools should declare readOnlyHint=true. Agents need this metadata to reason about safety and retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Place a hold on a book in Libby
No error handling guidance. Tools that call external APIs (Hardcover, Libby) have no documented error cases, recovery steps, or retry logic. An LLM hitting a 'book not found' or 'hold limit exceeded' error has no guidance on what to do next.
Enum constraints not declared in schema. 'status' parameter in hardcover_update_reading_status accepts 'reading, read, want-to-read, dnf' but no enum constraint is visible. 'format' in libby_place_hold lists 'ebook, audiobook, physical' in description but not as formal enum. LLMs will hallucinate invalid values.