openlibrary-mcp-server
Server Details
Search books and authors, fetch editions, browse subjects, and resolve cover images.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/openlibrary-mcp-server
- GitHub Stars
- 2
- Server Listing
- @cyanheads/openlibrary-mcp-server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 9 of 9 tools scored.
Each tool targets a distinct resource (author, author works, cover URL, edition, editions, subject, work, search authors, search books) with clear boundaries. Cross-references in descriptions further reduce ambiguity.
All tools follow a consistent 'openlibrary_<verb>_<resource>' pattern with snake_case. Verbs are uniformly 'get' for fetches and 'search' for queries, making the pattern predictable.
9 tools is well-scoped for a book metadata API. It covers the essential entities and search without being overwhelming or insufficient.
The set provides comprehensive read-only access to authors, works, editions, subjects, and search. Minor gaps include lack of direct work-by-ID search (though get_work covers it) and no batch operations, but core workflows are supported.
Available Tools
10 toolsopenlibrary_get_authorGet AuthorARead-onlyIdempotentInspect
Fetch author detail by Open Library Author ID (OL…A). Returns bio, birth/death dates, photo IDs, and linked identifiers from Wikidata, VIAF, ISNI, Goodreads, and LibraryThing. Use openlibrary_search_authors to find an author ID first.
| Name | Required | Description | Default |
|---|---|---|---|
| author_id | Yes | Open Library Author ID. Format: OL…A (e.g., "OL24638A"). A leading "/authors/" prefix is stripped if provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bio | No | Author biography. Absent when not provided. |
| name | Yes | Primary author name. |
| notice | No | Set when the requested author ID was merged into a different canonical ID. |
| author_id | Yes | Canonical Open Library Author ID (OL…A). |
| photo_ids | Yes | Numeric photo IDs. Pass to openlibrary_get_cover_url with target "author" and id_type "id". |
| birth_date | No | Birth date string. Absent when not recorded. |
| death_date | No | Death date string. Absent when not recorded. |
| remote_ids | Yes | Remote identifiers for cross-referencing with other databases. |
| fuller_name | No | Full name including middle names. Absent when not recorded. |
| personal_name | No | Personal or given name. Absent when not recorded. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering the safety profile. The description adds useful behavior beyond annotations, such as returning specific linked identifiers and normalizing a leading '/authors/' prefix.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states purpose and returned data, the second gives usage guidance. Every phrase earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter, a rich output schema, and clear annotations, the description fully covers purpose, return content, and prerequisite workflow. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage of the author_id parameter, including format, example, and prefix handling. The description repeats the ID format but adds no additional parameter semantics beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches author detail by a specific ID format, and enumerates the data returned (bio, dates, photo IDs, linked identifiers). This distinguishes it from sibling tools like openlibrary_search_authors or openlibrary_get_author_works.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells users to use openlibrary_search_authors first to obtain an author ID, which is clear contextual guidance. It does not provide an explicit when-not-to-use statement, but the alternative is named and the prerequisite is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_get_author_worksGet Author WorksARead-onlyInspect
List works by an author. Returns titles, cover IDs, and work OLIDs for drilling into editions or details. Use openlibrary_get_author for author bio and details, or openlibrary_get_editions to explore specific printings.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max works to return. | |
| offset | No | Zero-based offset for pagination. | |
| author_id | Yes | Open Library Author ID (OL…A). A leading "/authors/" prefix is stripped if provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total works by this author. |
| works | Yes | Works by this author, up to limit. |
| notice | No | Set when the requested author ID was merged into a different canonical ID. |
| author_id | Yes | Open Library Author ID. |
| totalCount | No | Total works by this author across all pages. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint, so the description adds value by disclosing the return fields (titles, cover IDs, work OLIDs) and the navigation intent ('drilling into editions or details'). It does not mention pagination behavior, but the schema covers that. This is a reasonable level of behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and every sentence adds value. It is concise without sacrificing essential information, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations provide safety context, the description fully covers purpose, return values, and usage alternatives. The tool is a straightforward list operation, and the description, combined with schema and annotations, gives the agent everything it needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage), so the description does not need to repeat parameter details. The description does not add extra parameter semantics, but the schema already provides clear meaning for author_id, limit, and offset. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List works by an author,' which is a specific verb and resource. It further clarifies the return payload (titles, cover IDs, work OLIDs) and explicitly distinguishes this tool from siblings by naming openlibrary_get_author and openlibrary_get_editions as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('for drilling into editions or details') and provides clear alternatives: 'Use openlibrary_get_author for author bio and details, or openlibrary_get_editions to explore specific printings.' This gives the agent actionable guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_get_cover_urlGet Cover URLARead-onlyIdempotentInspect
Resolve a cover image URL for a book or author photo. Returns a direct HTTPS URL in the requested size (S/M/L). The Covers API always returns HTTP 200 — missing covers return a 1×1 placeholder GIF, not a 404 — so the identifier format is validated locally first: "id" must be numeric, "isbn" 10 or 13 digits, "olid" an edition OLID (OL…M) for target "book" and an author OLID (OL…A) for target "author". Identifiers with path separators or control characters, and author-by-ISBN lookups, are rejected before any request. URLs can be embedded in markdown as .
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Image size. S = small (~45px tall), M = medium (~150px tall), L = large (~400px tall). | M |
| target | No | "book" returns a book cover from covers.openlibrary.org/b/. "author" returns an author photo from covers.openlibrary.org/a/ — use with id_type "id" (photo_id) or "olid" (author OLID). | book |
| id_type | Yes | "id" is the numeric cover_i / cover ID from search or work results. "isbn" and "olid" look up the cover from those identifiers. | |
| identifier | Yes | The identifier value, validated against id_type before the URL is built. For "id": a numeric cover or photo ID from work/edition/author data. For "isbn": 10 or 13 digits, hyphens optional. For "olid": an edition OLID (OL…M) for target "book", an author OLID (OL…A) for target "author". |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | Direct HTTPS URL to the cover image. The Covers API returns HTTP 200 for all requests — a 1×1 placeholder GIF is returned when no cover exists for the identifier. |
| note | Yes | Reminder that the URL always returns HTTP 200; a placeholder GIF is served when no cover exists. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description reveals critical behavior: the API always returns HTTP 200, missing covers yield a placeholder GIF instead of 404, and local validation rejects unsafe or invalid identifiers before any request. This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, each earning its place: purpose, API behavior, validation rules, and markdown embedding. It is dense yet completely free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple URL resolver, this description covers all necessary aspects: return format, size options, error behavior, validation constraints, and markdown usage. With an output schema present, the description does not need to repeat return structure, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all parameters (100% coverage), so the baseline is 3. The description adds valuable context by explaining the local validation logic, rejecting path separators, control characters, and author-by-ISBN lookups—details not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Resolve a cover image URL for a book or author photo.' This clearly differentiates it from sibling metadata getters by focusing on URL resolution rather than data retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on target types (book vs author) and identifier sources, but does not explicitly state when to prefer this tool over sibling tools. However, the unique purpose of URL resolution is implied strongly enough that the usage is understandable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_get_editionGet EditionARead-onlyIdempotentInspect
Resolve one or more editions by identifier: ISBN-10, ISBN-13, OCLC, LCCN, or Open Library Edition ID (OL…M). Every identifier in a call shares one id_type — pass id_type "isbn" for both ISBN-10 and ISBN-13. Up to 50 identifiers resolve in a single upstream request, so a bibliography or shelf export costs one call rather than one per book; a large batch is a large response, so ask for what you need. Returns full edition metadata including authors, publisher, language, all identifier types, and the parent work ID, with author names inline and no secondary lookup; when the edition record itself lists no authors, they are recovered from the parent work and marked as such. Partial success is the norm — identifiers that resolve come back in editions, the rest are listed in unresolved with a reason, and the call fails only when nothing resolved.
| Name | Required | Description | Default |
|---|---|---|---|
| id_type | Yes | Identifier type shared by every entry in identifiers. "isbn" handles both ISBN-10 and ISBN-13. "olid" is the native Open Library edition ID (OL…M). Mixing types within one call is not supported — issue one call per type. | |
| identifiers | Yes | Identifiers to resolve, 1–50, all of the type named by id_type. Resolved editions come back in request order. |
Output Schema
| Name | Required | Description |
|---|---|---|
| editions | Yes | Editions that resolved, in request order. Shorter than identifiers when any entry missed. |
| unresolved | Yes | Identifiers that produced no edition. Empty when every identifier resolved; never overlaps editions. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, but the description adds substantial behavioral detail: batch size limit of 50, partial success semantics (resolved vs unresolved with reasons), failure condition (only when nothing resolves), author recovery from parent work with inline marking, and request-order preservation. This goes well beyond the annotations and helps the agent anticipate response shape and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but every sentence earns its place. It starts with the core action, then covers batch sizing, response contents, and partial failure behavior. Information is front-loaded and logically ordered, making it easy to parse despite its length. No redundant or filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a fairly complex domain (identifier resolution, batch processing, partial success), the description covers all relevant aspects: identifier types, batch limits, return metadata, author handling, error conditions, and response ordering. An output schema exists, so return-value details are not needed in the description, but the behavioral expectations are fully explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description repeats key schema info (e.g., id_type "isbn" covers both ISBN-10/13) and adds only one new semantic detail not in the schema: 'Resolved editions come back in request order.' While useful, it doesn't significantly enrich the parameter meaning beyond what the schema already provides, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb-object statement: 'Resolve one or more editions by identifier' and enumerates exactly which identifier types are accepted (ISBN-10, ISBN-13, OCLC, LCCN, OLID). This clearly distinguishes it from siblings like openlibrary_get_editions (which likely operates by work/author) and openlibrary_get_work, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete use cases ('a bibliography or shelf export costs one call rather than one per book') and warns about large responses ('ask for what you need'). However, it does not explicitly name alternative tools for different lookup needs (e.g., 'use get_editions to list all editions of a work'), so the guidance is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_get_editionsGet EditionsARead-onlyIdempotentInspect
List editions of a work — different publishers, languages, formats, and print runs. Returns ISBNs, publisher, language, page count, and edition OLIDs. Use after openlibrary_get_work or openlibrary_search_books to find a specific printing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max editions to return. Prefer 10–20 for exploration. | |
| offset | No | Zero-based offset for pagination. | |
| work_id | Yes | Open Library Work ID (OL…W). A leading "/works/" prefix is stripped if provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total editions for this work. |
| work_id | Yes | Open Library Work ID. |
| editions | Yes | Editions of the work, up to limit. |
| totalCount | No | Total editions for this work across all pages. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, which cover the safety profile. The description adds value by specifying the return fields ('ISBNs, publisher, language, page count, and edition OLIDs') and the workflow context ('Use after...'), going beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, followed by return details and usage context. Every sentence serves a purpose with no filler or redundancy, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool, the description covers purpose, usage workflow, and return summary. With comprehensive annotations and a full output schema, there are no significant gaps. The pagination and parameter details are adequately handled by the input schema, making the description well-rounded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The main description does not add parameter-level meaning, but the input schema itself is thorough (e.g., work_id mentions prefix stripping, limit has a usage hint). The description's workflow note ('Use after...') implies the source of work_id, which is helpful but not essential.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'List editions of a work', immediately clarifying the function. It further distinguishes the tool from siblings like openlibrary_get_edition by using plural 'editions' and detailing the scope (publishers, languages, formats, print runs), making its unique purpose evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: 'Use after openlibrary_get_work or openlibrary_search_books to find a specific printing.' This provides clear contextual guidance and workflow context. However, it does not explicitly state when not to use it or directly contrast with openlibrary_get_edition, so it stops short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_get_subjectGet SubjectARead-onlyInspect
Browse works by subject. Returns matching works with edition counts and cover IDs, plus the total work count for the subject. Case and spacing are normalized before lookup, so "Science Fiction" and "science_fiction" are the same request. Subject tags are user-contributed and the vocabulary varies — when a subject returns no works, try a different word form (singular/plural), a synonym, or a broader term.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max works to return. Subject pages typically show 12 at a time. | |
| offset | No | Zero-based offset for pagination. | |
| subject | Yes | Subject name. Normalized before lookup — lowercased with spaces converted to underscores (e.g., "Science Fiction" → "science_fiction") — so varying case or spacing does not change the result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| works | Yes | Works under this subject, up to limit. |
| notice | No | Recovery guidance when work_count is 0 — echoes the subject and suggests alternatives. Absent when works are found. |
| totalCount | No | Total works tagged with this subject across all pages. |
| work_count | Yes | Total works tagged with this subject. |
| subject_key | Yes | Normalized subject key (lowercase, underscores). |
| subject_name | Yes | Canonical subject name as stored on Open Library. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits beyond the readOnlyHint annotation: case/spacing normalization, user-contributed vocabulary variability, and the possibility of no works. It also details the return contents (edition counts, cover IDs, total work count), which helps the agent interpret responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each serving a distinct purpose: stating the action, describing return values, noting normalization, and offering troubleshooting advice. It is front-loaded and contains no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the description covers all critical aspects: purpose, exact return values, normalization behavior, and edge-case handling. Combined with a complete schema and annotations, an agent has everything needed to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the schema already covers 100% of parameters, the baseline is 3. The description adds value by explaining the subject parameter's normalization behavior and giving advice about vocabulary variability and synonyms. Limit/offset are not further elaborated, but the schema descriptions are sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Browse' and clearly states the tool's returns: 'matching works with edition counts and cover IDs, plus the total work count.' This clearly distinguishes it from sibling tools like search_books or get_work, which have different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool—browsing works by subject. It also provides practical guidance for handling empty results ('try a different word form, a synonym, or a broader term'). However, it does not explicitly name alternatives or state when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_get_workGet WorkARead-onlyIdempotentInspect
Fetch a work by Open Library Work ID (OL…W). Returns title, description, subjects, cover IDs, and linked author IDs for follow-up lookups. Works represent the abstract book concept independent of any specific edition. Note: author names are not included — use openlibrary_get_author or openlibrary_search_books for names.
| Name | Required | Description | Default |
|---|---|---|---|
| work_id | Yes | Open Library Work ID. Format: OL…W (e.g., "OL45804W"). A leading "/works/" prefix is stripped if provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | Work title. |
| notice | No | Disclosure when the text output caps a long list — names the omitted count and points to the complete array in structuredContent. Absent when nothing was capped. |
| created | No | ISO 8601 creation timestamp. Absent when not available. |
| work_id | Yes | Canonical Open Library Work ID (OL…W). |
| subjects | Yes | Subject tags for this work. |
| cover_ids | Yes | Numeric cover IDs. Pass to openlibrary_get_cover_url with id_type "id". |
| author_ids | Yes | Open Library Author IDs (OL…A). Use openlibrary_get_author for names and bio. |
| description | No | Work description or blurb. Absent when not provided. |
| last_modified | No | ISO 8601 last-modified timestamp. Absent when not available. |
| subject_times | Yes | Time period subjects. |
| subject_people | Yes | People subjects. |
| subject_places | Yes | Geographic subjects. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld hints. The description adds meaningful context by specifying the exact return fields (title, description, subjects, cover IDs, author IDs) and the limitation that author names are absent. It also describes ID prefix stripping in the schema. This exceeds the annotation baseline without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: the action, the output fields, and the caveat with alternatives. No redundancy or filler—it is efficiently front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with full schema, annotations, and an output schema, the description is remarkably complete. It covers the core action, return content, entity concept, and usage boundaries, leaving no significant gaps. The additional structured data carries the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for the single parameter, including the ID format and prefix-stripping behavior. The description's mention of 'abstract work concept' adds marginal semantic context, but it doesn't materially enhance parameter understanding beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' and resource 'work by Open Library Work ID', clearly identifying the tool's function. It distinguishes itself from siblings like openlibrary_get_edition and openlibrary_get_author by noting it returns work-level metadata and linked author IDs, and explicitly disclaims author names. This is a precise, unambiguous purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: it addresses the work vs edition distinction, and directly states that author names are not included, pointing to openlibrary_get_author or openlibrary_search_books for that need. This gives the agent clear direction on when to choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_search_authorsSearch AuthorsARead-onlyInspect
Search Open Library authors by name. Returns Open Library Author IDs, names, birth/death dates, top works, and subject associations. Use author IDs for openlibrary_get_author (bio, remote IDs) or openlibrary_get_author_works (list of works).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return. | |
| query | Yes | Author name search query. Partial names and alternate names work. | |
| offset | No | Zero-based offset for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total matching authors across all pages. |
| notice | No | Guidance when the page is empty (how to vary a name that matched nothing, or which offset to retry when offset ran past the end) or when the text output capped a per-author list. Absent when neither applies. |
| offset | Yes | Zero-based offset of the first returned result — echoes the requested offset, so an empty page still records the offset that produced it. |
| authors | Yes | Matching authors, up to limit. |
| totalCount | No | Total matching authors across all pages — the upstream match count, reported even when this page is empty because offset ran past the end. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds value by specifying return content and downstream linkage (openlibrary_get_author, openlibrary_get_author_works), which gives behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and includes only necessary details. It is efficient and well-structured, with no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the schema fully documents parameters and the output schema exists, the description provides enough context with return fields and downstream tool references. It lacks an explicit exclusion against using this for book searches, but the title and sibling list make that clear, so it is not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter clearly described (query, limit, offset). The description does not add additional parameter details beyond the schema, so it relies on the schema's own documentation, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search Open Library authors by name' with a specific verb and resource. It also lists the return fields (Author IDs, names, dates, top works, subject associations) and connects to sibling tools, distinguishing it from book searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this to search authors and then use author IDs for downstream tools. It implies when to use it but does not explicitly contrast with other search tools like search_books; nonetheless, the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_search_booksSearch BooksARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| isbn | No | Find works that have editions with this ISBN (10 or 13 digits, hyphens ignored). | |
| sort | No | Sort order. "relevance" uses Solr scoring. "new"/"old" sort by first publish year. "rating" by average community rating. "editions" by edition count. | relevance |
| limit | No | Max results to return. Higher values increase response size; prefer 10–20 for exploration. | |
| query | No | Full-text search query. Supports Solr field prefixes: title:, author:, subject:, publisher:, isbn:, language:. Omit to use the filter parameters instead. | |
| title | No | Filter by title. Matched against work title and alternative titles. | |
| author | No | Filter by author name. Partial names work. | |
| offset | No | Zero-based offset for pagination. | |
| subject | No | Filter by subject tag (e.g., "science fiction", "history"). | |
| language | No | Restrict 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. | |
| publisher | No | Filter by publisher name. Partial names work (e.g., "Penguin"). | |
| include_availability | No | Include 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
| Name | Required | Description |
|---|---|---|
| total | Yes | Total matching works across all pages. |
| works | Yes | Matching works, up to limit. |
| notice | No | Guidance 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. |
| offset | Yes | Zero-based offset of the first returned result. |
| queryEcho | No | The effective search criteria as the server interpreted them — query string plus any active field filters. Absent when only a bare query is used. |
| totalCount | No | Total matching works across all pages — the upstream match count, reported even when this page is empty because offset ran past the end. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and open-world semantics. The description adds meaningful behavioral context by stating it returns work-level records with edition counts, cover IDs, and reading availability. It also implies pagination/filtering behavior, though it does not mention rate limits or error cases. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (four short sentences) and front-loaded with the core purpose. Every sentence earns its place: it states what the tool does, what filters exist, what results look like, and how to proceed further. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, no required fields) and the comprehensive schema (100% coverage) plus an output schema, the description is sufficient. It explains the key distinction between general query and field filters, and points to openlibrary_get_editions for drill-down. It does not need to explain return values because the output schema exists, but it could have mentioned pagination explicitly; however, the schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema provides full parameter documentation. The description adds a general usage pattern—'Use query for general search or combine specific field filters'—which clarifies the relationship between the query parameter and the filter fields. This is helpful but does not add detailed semantics beyond what the schema already provides, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'Full-text book search across Open Library works', which is a specific verb+resource combination. It distinguishes from siblings by noting it searches works (not authors or inside text) and returns work-level records, differentiating it from openlibrary_search_authors and openlibrary_search_inside.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: 'Use query for general search or combine specific field filters' and indicates when to use a different tool: 'Results are work-level — drill into editions via openlibrary_get_editions.' It does not explicitly say when not to use each sibling, but the contrast with editions is clear and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openlibrary_search_insideSearch Inside BooksARead-onlyInspect
Search the full text of books scanned by the Internet Archive — the "which book contains this passage?" lookup that the metadata tools cannot answer. Quote a phrase for an exact-phrase match; bare terms match anywhere in the text. Each result is an Internet Archive item with the matching passages as snippets, plus a relevance score. The full-text index is an order of magnitude slower than the metadata endpoints (seconds, not milliseconds), so reach for it when the passage is the question, not as a general book search — use openlibrary_search_books for title, author, or subject. Results key on Internet Archive items rather than Open Library works: chain the returned ia_identifier to archive.org, or match it against the ia_identifiers on openlibrary_search_books results to reach the catalogue record.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max matching items to return. Each carries its own snippets, so higher values grow the response quickly — prefer 10–20. | |
| query | Yes | Text to find inside scanned books. Wrap in double quotes for an exact-phrase match (e.g., "the spice must flow"); unquoted terms match independently and return far broader results. | |
| offset | No | Zero-based offset for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total matching Internet Archive items across all pages. |
| notice | No | Guidance 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-item snippet list. Absent when neither applies. |
| offset | Yes | Zero-based offset of the first returned match. |
| matches | Yes | Matching items, up to limit, ordered by relevance. |
| totalCount | No | Total matching items across all pages — the upstream match count, reported even when this page is empty because offset ran past the end. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses important behavioral traits: the index is 'an order of magnitude slower' (performance), results are keyed to Internet Archive items rather than Open Library works, and it advises chaining the returned ia_identifier to archive.org or matching it against openlibrary_search_books results. This adds significant value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is deliberately structured: purpose, usage, performance, and result interpretation. It is a bit longer than minimal, but every sentence contributes useful context (e.g., performance caveat, IA vs OL distinction). No fluff, but it could be tightened slightly without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (full-text search, IA item vs OL work mapping, output schema), the description covers all critical aspects: what results look like (snippets + relevance score), how to navigate to the catalogue record, and the performance trade-off. It is complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all three parameters. The description reinforces the query quoting behavior ('Quote a phrase for an exact-phrase match; bare terms match anywhere') but does not add meaning significantly beyond what the schema already states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Search the full text of books scanned by the Internet Archive' and frames the tool as the 'which book contains this passage?' lookup, immediately distinguishing it from sibling metadata tools like openlibrary_search_books.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'reach for it when the passage is the question, not as a general book search — use openlibrary_search_books for title, author, or subject.' This clearly states when to use and which alternative to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Flicense-qualityAmaintenanceProvides a read-only API over a book catalogue, offering tools to search books, retrieve book details and series, and inspect provenance and source agreement data.
- Alicense-qualityCmaintenanceProvides access to BookBrainz open book metadata, enabling search, lookup, and browsing of works, editions, authors, publishers, and series via natural language or direct tool calls.8MIT
- Alicense-qualityCmaintenanceEnables search and reading of Project Gutenberg books with tools for searching by title/author/subject and fetching word-range slices of book text.MIT
- FlicenseAqualityCmaintenanceConnects AI assistants to the Open Library API for searching books and authors, retrieving metadata, and comparing works.12
Your Connectors
Sign in to create a connector for this server.