mcp-open-library demonstrates solid tool design with consistent naming conventions, complete input schemas, and clear descriptions. All 7 tools follow verb_noun naming (get_*, search_*) and include proper JSON Schema validation with type constraints. Descriptions are concise and actionable (avg ~150 chars). However, output schemas are not explicitly documented in the source code, and there is minimal error recovery guidance. Parameter descriptions are adequate but could be more explicit about constraints and expected formats. No tool annotations (readOnlyHint, etc.) are present despite all tools being read-only operations.
Get detailed information for a specific author using their Open Library Author Key (e.g. OL23919A).
Get the URL for an author's photo using their Open Library Author ID (OLID e.g. OL23919A). Reports when no photo exists rather than returning a URL to a blank placeholder.
Search for author information on Open Library. Returns at most `limit` authors (default 10) together with `num_found`, the total number of matches; page through them with `offset`. Each result's `key` can be passed to `get_author_info` for that author's full record.
Get detailed information about a book using its identifier (ISBN, LCCN, OCLC, OLID).
Search for a book by its title on Open Library. Returns at most `limit` results (default 10) together with `num_found`, the total number of matches; page through them with `offset`. Each result carries `best_edition` — one edition of the work, with its `isbn_13`/`isbn_10` where Open Library has them, and its `edition_key`, which can be passed to `get_book_by_id` as `{ idType: "olid" }` for that edition's full record.
Output schemas not documented in source code. While input schemas are complete with type constraints, return types and field structures are not visible in the tool definitions.
No tool annotations present. All tools are read-only operations that would benefit from explicit readOnlyHint annotations to signal to agents they are safe to call speculatively without user confirmation.
Minimal error recovery guidance in descriptions. Tools do not explain what to do when API calls fail, no alternative suggestions for failed lookups, and no guidance on pagination edge cases.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Get the URL for a book's cover image using a key (ISBN, OCLC, LCCN, OLID, ID) and value. Reports when no cover exists rather than returning a URL to a blank placeholder.
Search Open Library across titles, authors, subjects, places, people, publishers and ISBNs. Provide at least one search criterion: q, title, author, subject, place, person, publisher, isbn; combining several narrows the search. Returns at most `limit` results (default 10) together with `num_found`, the total number of matches; page through them with `offset`. Each result carries `best_edition` — one edition of the work, with its `isbn_13`/`isbn_10` where Open Library has them, and its `edition_key`, which can be passed to `get_book_by_id` as `{ idType: "olid" }` for that edition's full record.
Search/get tools with optional limit/offset parameters lack explicit documentation of pagination behavior and default limits. Descriptions mention 'default 10, max 100' but some parameters lack detail on behavior at boundaries.