Skip to main content
Glama

Search Books

openlibrary_search_books
Read-only

Full-text book search across Open Library works. Supports field filters (title, author, subject, publisher, ISBN, language) and returns work-level records with edition counts, cover IDs, and reading availability. Use query for general search or combine specific field filters. Results are work-level — drill into editions via openlibrary_get_editions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
isbnNoFind works that have editions with this ISBN (10 or 13 digits, hyphens ignored).
sortNoSort order. "relevance" uses Solr scoring. "new"/"old" sort by first publish year. "rating" by average community rating. "editions" by edition count.relevance
limitNoMax results to return. Higher values increase response size; prefer 10–20 for exploration.
queryNoFull-text search query. Supports Solr field prefixes: title:, author:, subject:, publisher:, isbn:, language:. Omit to use the filter parameters instead.
titleNoFilter by title. Matched against work title and alternative titles.
authorNoFilter by author name. Partial names work.
offsetNoZero-based offset for pagination.
subjectNoFilter by subject tag (e.g., "science fiction", "history").
languageNoRestrict results to one language. Takes a 3-letter MARC code (e.g., "eng", "fre", "ger", "chi") — the same vocabulary openlibrary_get_edition and openlibrary_get_editions return. A 2-letter ISO 639-1 code (e.g., "en", "fr") is accepted and translated to its MARC equivalent; an unrecognized 2-letter code is rejected rather than silently ignored. The equivalent in-query form is language:eng.
publisherNoFilter by publisher name. Partial names work (e.g., "Penguin").
include_availabilityNoInclude live reading availability from Internet Archive (borrow/read status). Adds ~200ms latency. Use when the user needs to know if they can read the book online.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
totalNoTotal matching works across all pages.
worksNoMatching works, up to limit.
noticeNoGuidance when the page is empty (how to broaden a query that matched nothing, or which offset to retry when offset ran past the end) or when the text output capped a per-work list. Absent when neither applies.
offsetNoZero-based offset of the first returned result.
queryEchoNoThe effective search criteria as the server interpreted them — query string plus any active field filters. Absent when only a bare query is used.
totalCountNoTotal matching works across all pages — the upstream match count, reported even when this page is empty because offset ran past the end.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered and the search description is consistent with it — no contradiction. The description adds useful return-context (work-level records, edition counts, cover IDs, reading availability) and the work-vs-edition distinction, though it does not disclose pagination depth, rate-limit behavior, or failure modes. Given the annotations carry the read-only disclosure, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero filler: purpose first, then capability enumeration, then usage routing to the editions sibling. Every sentence earns its place and the structure front-loads the most decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, fully-schema-documented read-only search tool with an output schema covering the return values, the description is complete: it states purpose, capability set, the query-versus-filter usage pattern, and the sibling to route to for edition detail. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 11 parameters including the language MARC-code behavior, sort semantics, and include_availability latency. The description adds modest value by noting that 'query' can be swapped for compiled field filters ('Use query for general search or combine specific field filters'), helping the agent choose between search strategies, but it otherwise repeats what the schema already states. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb plus resource ('Full-text book search across Open Library works'), then enumerates the supported filter fields (title, author, subject, publisher, ISBN, language) and the return shape (work-level records with edition counts, cover IDs, reading availability). It explicitly differentiates from siblings by stating results are work-level and routing edition-level work to openlibrary_get_editions, so an agent can tell it apart from get_edition/get_editions and the author/inside search tools without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives actionable selection guidance: 'Use query for general search or combine specific field filters' tells the agent which parameter path to choose, and 'Results are work-level — drill into editions via openlibrary_get_editions' names an alternative tool and the condition that selects it. It does not explicitly state when to prefer openlibrary_search_authors or openlibrary_search_inside over this tool, leaving some sibling differentiation to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Every tool targets a distinct resource-action pair: author lookup, author works, cover resolution, edition resolution by identifier, edition listing by work, subject browsing, work lookup, and three search types (authors, books, full-text). The only near-overlap is get_edition vs get_editions, but the descriptions clearly separate identifier-based resolution from listing editions of a work, and cross-references reinforce the distinction.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern: get_* for direct retrieval and search_* for query-based lookups. The single pair get_edition/get_editions is a natural pluralization, not an inconsistency. Naming is predictable and intuitive throughout.

Tool Count5/5

Ten tools is an ideal size for a read-heavy library API. Each tool serves a distinct purpose (author, work, edition, subject, cover, three search modes) without redundancy or bloat. The surface feels deliberately scoped and not overwhelming.

Completeness5/5

The set covers the full read surface of Open Library: authors (get/search), works (get/search), editions (get by ID, list by work), subjects, covers, and full-text search. There are no obvious missing operations—all core entities and lookup paths are represented, and recoveries for missing data (e.g., author names) are built into descriptions.