Books & Film MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Books & Film MCP ServerSearch for '1984' in Open Library"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Books & Film MCP Server
A comprehensive Model Context Protocol (MCP) server for books, films, and scholarly publications with advanced search capabilities and user-friendly formatting.
Supported APIs: Open Library, Google Books, OpenAlex, Crossref, TMDb, OMDb, and LIBRIS (Xsearch & OAI-PMH).
Features
Core Capabilities
🔍 18+ search and retrieval tools across multiple databases
📚 Book data from Open Library, Google Books, and LIBRIS
🎬 Movie information from TMDb and OMDb
📄 Scholarly articles via OpenAlex and Crossref
🔗 8 URI-based resources for direct data access
Enhanced Search Experience
🎯 Smart Summary Mode - Scholarly results show only essential fields instead of 200+ line JSON responses
🔄 Cross-source deduplication - Removes duplicate books found across multiple databases
🌍 Advanced filtering - Language, publication year, and recent publication filters
⚡ Combined searches - Search multiple databases simultaneously
📋 Readable formatting - Optional text format for better CLI display
🛡️ Reliability - Automatic retry, caching, and rate limiting
Related MCP server: Academic Paper MCP HTTP/SSE Server
Installation
npm installDevelopment
npm run devBuild & Run
npm run build
npm start # stdio transportEnvironment Variables
Copy .env.example to .env and configure:
Required:
OMDB_API_KEY- OMDb API keyTMDB_ACCESS_TOKENorTMDB_API_KEY- TMDb authentication
Optional but recommended:
GOOGLE_BOOKS_API_KEY- Higher API quotasCROSSREF_MAILTO- Polite pool accessUSER_AGENT_EXTRA- Custom user agent string
Available Tools
📚 Books
books_openlibrary_search- Search Open Library works/editionsbooks_openlibrary_get_work- Get work by OLIDbooks_openlibrary_get_edition- Get edition by OLIDbooks_google_search- Enhanced Google Books search with structured fields (intitle,inauthor,isbn, etc.)books_google_get_volume- Get volume by ID
📄 Scholarly Publications
scholarly_openalex_search_works- Enhanced OpenAlex search with summary mode and advanced filtersscholarly_openalex_get_work- Get work by ID/URIscholarly_crossref_search_works- Enhanced Crossref search with structured queries and summary modescholarly_crossref_get_by_doi- Get work by DOI
🎬 Films
film_tmdb_search_movie- Search TMDb moviesfilm_tmdb_get_movie- Get movie details by IDfilm_omdb_search- Search OMDb by titlefilm_omdb_get- Get by IMDb ID or title
🇸🇪 Swedish Libraries (LIBRIS)
se_libris_xsearch- Enhanced search with structured fields and boolean queriesse_libris_oai_list_records- OAI-PMH harvesting
⚡ Combined Multi-Source Search
books_search_across_all- NEW Search Google Books, Open Library, and LIBRIS simultaneously with deduplicationscholarly_search_across_all- NEW Search OpenAlex and Crossref simultaneously with summary mode
Key Search Parameters
Summary & Formatting
summaryMode: true(default) - Returns essential fields only vs. full API responsesformatAsText: true- Human-readable text format instead of JSONdeduplicateResults: true(default) - Remove cross-source duplicates
Advanced Filtering
recentYears: 5- Publications from last N yearslanguage: "en"- Language filter (ISO 639-1 codes)isOpenAccess: true- Open access publications onlypublicationYear: 2023- Specific year filter
Available Resources
Direct URI access to data:
openlibrary://works/{olid}- Open Library workopenlibrary://editions/{olid}- Open Library editiongooglebooks://volumes/{id}- Google Books volumeopenalex://works/{id}- OpenAlex workcrossref://works/{doi}- Crossref worktmdb://movie/{id}- TMDb movieomdb://id/{imdbId}- OMDb by IMDb IDlibris://xsearch?q={query}- LIBRIS searchlibris://oai/listrecords?prefix={metadataPrefix}&from={from}&until={until}&set={set}- LIBRIS OAI-PMH
Usage with Claude Desktop
Option 1: Local Server
Add to your Claude Desktop configuration:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"books-film-mcp": {
"command": "node",
"args": ["/absolute/path/to/books-film-mcp/dist/server.js"],
"env": {
"OMDB_API_KEY": "your-omdb-key",
"TMDB_ACCESS_TOKEN": "your-tmdb-token"
}
}
}
}Option 2: MCP Bundle (MCPB)
Create an installable bundle:
npm i -g @anthropic-ai/mcpb
npm run build
mcpb init # creates manifest.json
mcpb pack # generates .mcpb fileOpen the .mcpb file in Claude Desktop to install.
Search Examples
Enhanced Google Books Search
{
"inauthor": "Astrid Lindgren",
"language": "swe",
"maxResults": 10
}Scholarly Search with Summary Mode
{
"query": "climate change",
"recentYears": 3,
"isOpenAccess": true,
"summaryMode": true,
"formatAsText": true
}Combined Book Search with Deduplication
{
"author": "Selma Lagerlöf",
"deduplicateResults": true,
"maxResultsPerSource": 5
}Performance & Reliability
Automatic retry logic with exponential backoff
Memory caching (1-hour TTL) for frequently accessed data
Rate limiting respects API limits (Crossref: 50/min, Google Books: 100/min, etc.)
Smart error handling with graceful degradation
Response optimization - Summary mode reduces scholarly results from 200+ lines to ~10 essential fields
API Documentation
Each service follows their respective API guidelines with enhanced MCP features:
Open Library: Public API with optional pagination and field filtering
Google Books: Enhanced with structured field searches (
intitle,inauthor,isbn, etc.)OpenAlex: Advanced filters + summary mode for readable results
Crossref: Structured queries + summary mode + date range filtering
TMDb: Movie database with v3 (API key) or v4 (Bearer token) auth
OMDb: IMDb data requiring API key registration
LIBRIS: Enhanced with boolean queries and structured field searches
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT
Available Tools
17 toolsbooks_google_get_volumeGoogle Books — Get volumeC
Fetch a single volume by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It does not mention `volumeInfo` structure quirks, whether a missing/unknown ID returns an error or empty result, rate limiting for API calls, or that keywords in an ID could cause false positives. For a single-item GET tool with zero annotations, this is thin.
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?
One short sentence, zero waste, front-loaded with the verb. Efficient but arguably under-specified for the parameters dimension, which the conciseness score doesn't penalize heavily.
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?
With a single required parameter, a simple schema, and no output schema, the tool is simple. However, no output schema exists and there are zero annotations, so the description should explain what the returned volume contains (volumeInfo fields) and error behavior for unknown IDs. The description is too terse for a tool returning a full book record.
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 0% and the single parameter `id` has no type specifics or format hints in the description beyond 'by id.' The description adds minimal value over the raw schema, not specifying what format the id takes (e.g., alphanumeric Google ID vs ISBN or URL-encoded).
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 states 'Fetch a single volume by id,' a clear verb+resource combination. It distinguishes from sibling tools like books_google_search (which searches) and books_openlibrary_get_work (which fetches by OpenLibrary work ID rather than Google volume ID).
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 'by id' phrasing implies this is for when you already have a Google volume ID, distinct from searching. However, it does not explicitly say when to use this vs alternatives like books_search_across_all or books_google_search, nor does it note that the ID must be a Google Books volume ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
books_google_searchGoogle Books — Search volumesB
Search Google Books volumes with structured field support (intitle, inauthor, etc.) or general query.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | General search query | |
| isbn | No | Search by ISBN | |
| lccn | No | Search by Library of Congress Control Number | |
| oclc | No | Search by OCLC number | |
| intitle | No | Search in book titles | |
| orderBy | No | Sort order | |
| subject | No | Search by subject/category | |
| inauthor | No | Search by author name | |
| printType | No | Filter by print type | |
| maxResults | No | Maximum results (1-40) | |
| startIndex | No | Start index for pagination | |
| inpublisher | No | Search by publisher | |
| langRestrict | No | Language restriction (ISO 639-1 code) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries full burden for behavioral disclosure. It is read-only-ish (a search), but the description doesn't clarify rate limits, whether this is a free/public Google Books API without authentication, or how results are returned. It adds no behavioral context beyond the basic search action already evident from the name.
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 a single efficient sentence that captures the core capability without waste. It front-loads the verb+resource and packs the field support examples concisely. Could arguably benefit from one more sentence about limiting conditions, but as-is it is appropriately lean.
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?
With 13 parameters, no output schema, and no annotations, the description is minimal. The rich parameter schema compensates heavily (100% coverage), and for a read-only search tool the description is arguably adequate. However, it doesn't explain result meaning, pagination semantics, or when maxResults/startIndex interplay matters, leaving completeness somewhat thin for such a parameter-rich tool.
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 each of the 13 parameters already has a solid description, raising the baseline. The description adds marginal value by explaining that intitle/inauthor are structured fields beyond what individual parameter schemas state individually. The 'general query' phrasing clarifies that q is a catch-all integer search, complementing 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?
Description states 'Search Google Books volumes' with a specific verb+resource and mentions the structured field support (intitle, inauthor, etc.) alongside general query capability. It clearly distinguishes from sibling tools like books_openlibrary_search and books_search_across_all in terms of provider (Google Books) and operation type (search), though it doesn't explicitly name the sibling 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 implies the tool handles both structured-field and general-query searches but provides no explicit when-to-use guidance or exclusions versus sibling search tools. Given siblings like books_search_across_all and books_openlibrary_search exist, there's no statement clarifying when to prefer this Google Books-specific search over the aggregate or OpenLibrary alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
books_openlibrary_get_editionOpen Library — Get editionC
Fetch an edition by OLID (e.g., OL7058607M).
| Name | Required | Description | Default |
|---|---|---|---|
| olid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't state whether this is a read-only operation, what happens if the OLID is invalid/not found, rate limits, or whether the response includes full metadata or a summary. For a fetch operation with zero annotation coverage, this is a meaningful gap.
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 a single concise sentence that includes a concrete example. Every word earns its place and the example is valuable. It's appropriately sized for a simple single-parameter fetch tool.
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 no annotations and no output schema that returns rich bibliographic data, the description is thin. It doesn't explain what data will be returned, the relationship between editions and works (relevant given the sibling get_work tool), or how the tool fits into the broader book lookup workflow.
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 single parameter 'olid' has 0% schema description coverage, so the description must explain it. The description does provide meaning via the example 'OL7058607M', which clarifies the expected format. However, it doesn't specify the full pattern (e.g., prefix rules, whether only M-suffix editions are valid) or edge cases.
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 'Fetch an edition by OLID (e.g., OL7058607M)' clearly states the verb (fetch), resource (edition), and identifier format with an example. However, it doesn't distinguish itself from the sibling get_work tool beyond the resource type name, and provides no context on what an edition represents relative to a work.
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?
No guidance is provided on when to use this tool versus get_work, search tools, or crossref/openalex alternatives. The description only explains what it does, not when to choose it. For an identifier-based fetch, a user could reasonably guess, but no explicit context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
books_openlibrary_get_workOpen Library — Get workC
Fetch a work by OLID (e.g., OL27448W).
| Name | Required | Description | Default |
|---|---|---|---|
| olid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It doesn't state what happens on invalid/unknown OLIDs, whether the response includes metadata like author/title/publish year, whether rate limits apply, or any other behavioral traits. For a fetch tool with no annotations, this is a significant gap.
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?
A single sentence with zero waste. Front-loaded with the action verb and includes a concrete example inline. Nothing extraneous.
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?
With no annotations and no output schema, the description carries full responsibility, yet it's minimal. For a single-parameter fetch tool the core is simple, but it lacks information about return structure, error handling, or the distinction between work and edition—especially relevant given the sibling get_edition tool exists. The description would benefit from clarifying what a 'work' contains vs an edition.
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 0%, so the description must compensate. The example (OL27448W) helps clarify the olid parameter format, which is useful. However, it doesn't explain what constitutes a valid OLID beyond the example, nor common error cases. Baseline for low coverage is low, and the example provides only marginal value.
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?
Description clearly states 'Fetch a work by OLID' with a concrete verb+resource. It gives an example format (OL27448W) that clarifies what an OLID looks like. It doesn't explicitly differentiate from sibling get_edition or get_work tools from other providers, but the resource and identifier example make the purpose clear.
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?
No when-to-use guidance is provided. There's no mention of when to prefer this over books_openlibrary_get_edition, or when edition vs work is relevant. The agent must infer usage from the resource type name alone, with no explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
books_openlibrary_searchOpen Library — Search works/editionsB
Search Open Library (works by default). Supports q/title/author, pagination, fields, sort, lang.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| lang | No | ||
| page | No | ||
| sort | No | ||
| limit | No | ||
| title | No | ||
| author | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't mention that this is a read-only search operation, doesn't describe response format/returned fields, doesn't mention rate limits, API quirks, or that 'works by default' means editions require explicit specification. Since it's a search endpoint against an external API, behavior around defaults and result structure should be disclosed.
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?
Single sentence, highly compact and efficient. Every element earns its place by signaling the query surface area. The parenthetical '(works by default)' is valuable scope-setting. Minor issue is it's somewhat telegraphic—stacking features without explaining semantics—but it avoids redundancy well.
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 8 parameters with 0% schema coverage, no annotations, and no output schema, the description should carry substantial weight. It communicates the query modes and features at a high level but leaves key gaps: what fields are available, what sort options exist, whether there's pagination limits, what the response structure looks like, and how lang interacts with query parameters. For a search tool with this much surface area, the description is under-specified.
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 0%, and there are 8 undocumented parameters. The description mentions q/title/author, pagination, fields, sort, lang - which maps to the parameter names but adds minimal semantic value beyond what parameter names imply. It doesn't clarify that q is the general full-text query while title/author are field-specific filters, doesn't explain what 'fields' string format should be, or what sort values are valid. With 0% coverage, the description should compensate more but only partially does.
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 (works by default)' with a specific verb+resource. It mentions the tool searches works and editions, distinguishing it from sibling tools like books_openlibrary_get_work and get_edition which retrieve specific works rather than search. The default 'works' scope is helpful context. However, it doesn't explicitly differentiate from the search_across_all sibling tools that may also search this domain.
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 implicitly indicates this is for searching (as opposed to get_work/get_edition which retrieve specific items). It lists supported fields (q/title/author) and features (pagination, fields, sort, lang) which hints at usage contexts. However, there's no explicit when-to-use vs alternatives guidance, no mention of when to prefer this over books_google_search or scholarly_openalex_search_works, and no exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
books_search_across_allBooks — Search across all databasesB
Search simultaneously across Google Books, Open Library, and LIBRIS for books and publications.
| Name | Required | Description | Default |
|---|---|---|---|
| isbn | No | ISBN to search for | |
| title | No | Book title to search for | |
| author | No | Author name to search for | |
| subject | No | Subject/topic | |
| language | No | Language filter | |
| publisher | No | Publisher name | |
| includeLibris | No | Include LIBRIS (Swedish library) in search | |
| publicationYear | No | Publication year | |
| deduplicateResults | No | Remove duplicate books found across multiple sources | |
| includeGoogleBooks | No | Include Google Books in search | |
| includeOpenLibrary | No | Include Open Library in search | |
| maxResultsPerSource | No | Maximum results per database | |
| similarityThreshold | No | Similarity threshold for deduplication (0.1-1.0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'Search simultaneously' without disclosing behaviors like rate limiting across 3 external APIs, network latency implications, failure handling when one database is down, or that deduplication and similarityThreshold affect result merging. The description is silent on what the aggregation actually does to results beyond combining 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 a single efficient sentence that communicates the core aggregate functionality. Zero waste. However, given the tool's complexity (13 parameters, 3 data sources, dedup logic), one might argue it's slightly under-specified rather than appropriately concise, but the sentence structure itself is clean and front-loaded with the key verb.
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?
This is a complex aggregate tool with 13 parameters covering multi-source deduplication, per-source limits, source toggles, and similarity thresholds. No output schema exists, yet the description says nothing about result format, how results from different sources are merged/ordered, or return structure. For a tool this complex with zero annotations and no output schema, the description is materially incomplete.
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 all 13 parameters are already documented in the schema. The description adds no special semantic value beyond 'search for books and publications.' With full schema coverage, baseline 3 is appropriate - the description doesn't convey aggregations or interactions between parameters like maxResultsPerSource, deduplicateResults, and similarityThreshold affecting merged output.
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 a specific verb 'Search simultaneously' with a clear resource scope ('across Google Books, Open Library, and LIBRIS for books and publications'). It clearly distinguishes from siblings like books_google_search (single source), scholarly_search_across_all (different domain - scholarly works vs books), and individual database tools. The 'across all databases' scope is explicit.
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 notes the simultaneous cross-database nature but does not explicitly state when to use this vs a single-source search like books_google_search or books_openlibrary_search. It doesn't mention alternatives for narrower per-database filtering. The aggregate-search purpose is implied but no exclusions or explicit when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
film_omdb_getOMDb — Get by IMDb ID or titleC
Fetch OMDb details by imdbId or title/year.
| Name | Required | Description | Default |
|---|---|---|---|
| plot | No | ||
| year | No | ||
| title | No | ||
| imdbId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state what happens with ambiguous title/year lookups, what the response format contains, whether omitting all parameters returns an error, or any rate-limit considerations for the OMDb API. For a fetch tool, this is a notable gap.
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 a single short sentence, which is concise, but it is under-specified rather than efficiently specified. There is no front-loading of key decision information. It earns points for brevity but loses for substance.
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 fetch-by-identifier tool with 4 parameters, 0% schema coverage, no annotations, and no output schema, the description is insufficient. It doesn't explain return structure, the semantics of the plot parameter, which identifier takes precedence, or how to disambiguate results. A more capable description is warranted for this degree of ambiguity.
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 0%, so the description must compensate, but it adds no parameter-level detail. It doesn't clarify how plot choices differ, whether title alone suffices or year is needed for disambiguation, or the relationship between title/year and imdbId. 4 parameters are entirely undocumented beyond their bare names.
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 states the verb 'Fetch' and the resource 'OMDb details', mentioning the lookup key (imdbId or title/year). It is somewhat clear but does not differentiate from the sibling tool film_omdb_search, which is also OMDb-related. The purpose is understandable but could more precisely state it retrieves a single record by identifier.
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?
No guidance is provided on when to use this tool versus film_omdb_search, film_tmdb_get_movie, or others. It does not mention that imdbId is the preferred key vs title/year, nor exclusions like 'use title+year together for disambiguation'. No alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
film_omdb_searchOMDb — SearchC
Search OMDb by title/year/type.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| type | No | ||
| year | No | ||
| title | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It does not state whether this is read-only, requires an API key, has rate limits, returns partial matches vs exact matches, or what the result structure looks like. For a search tool with no annotation coverage, this is a meaningful gap.
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 a single short sentence with zero waste. However, brevity here borders on under-specification rather than efficiency — while it's concisely written, it leaves substantial information absent.
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 generic search endpoint with 4 parameters, no output schema, and no annotations, the description is thin. It doesn't clarify the fuzzy-match behavior, pagination semantics for the page parameter, or how results are ordered/scored, which are important for an agent deciding how to use a search tool.
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 0%, so the description must compensate for the 4 parameters. It mentions title/year/type broadly but adds no detail beyond what the schema property names already convey. It omits 'page' entirely and provides no guidance on format constraints (e.g., year as 4-digit, type enum values).
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 states 'Search OMDb by title/year/type' which is a specific verb+resource with the key search dimensions. However, it does not differentiate from sibling search tools like film_tmdb_search_movie or books_openlibrary_search, and the generic 'Search' doesn't clarify what result set or filtering behavior this returns.
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?
There is no guidance on when to use this tool vs the sibling film_tmdb_search_movie, film_omdb_get, or the cross-across-all search tools. The description provides no exclusions or alternative tool recommendations, leaving the agent to guess when a TMDB search vs OMDb search is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
film_tmdb_get_movieTMDb — Get movie detailsB
Get TMDb movie details by id with optional append_to_response.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| appendToResponse | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It doesn't disclose what details are returned, whether append_to_response enables sub-resources like credits, videos, or reviews, what API behaviors to expect (rate limits, auth), or how the data is structured. For a fetch tool this is a moderate gap — the read-only nature is implied but nothing else is disclosed.
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 a single efficient sentence with zero waste. It front-loads the primary purpose and names the optional parameter accurately. Very concise.
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 relatively simple 2-parameter get-by-id tool, the description is mostly adequate. However, with no annotations, no output schema, and 0% schema coverage, it could usefully mention that append_to_response accepts comma-separated TMDb sub-resource names and that the response contains standard TMDb movie fields. It's functional but leaves the append_to_response mechanism underspecified.
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 0%, meaning neither the schema nor the description explain what 'id' refers to (TMDb internal ID format, type) or what values append_to_response accepts (comma-separated sub-resources like 'credits,reviews'). The description names append_to_response but doesn't explain its format or possible values, so it adds marginal value over the raw parameter names.
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 states 'Get TMDb movie details by id with optional append_to_response,' which is a clear verb+resource pairing that specifies the input mechanism (id) and an optional extension. It distinguishes from siblings like film_omdb_get (different source) and film_tmdb_search_movie (search vs retrieval), though it doesn't explicitly name 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 implies when to use this tool — when you already have a TMDb movie id and need full details — but doesn't explicitly state when not to use it or name the sibling search tool as the alternative for when you lack an id. The context is reasonably clear but lacks explicit exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
film_tmdb_search_movieTMDb — Search movieC
Search The Movie Database for movies.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| year | No | ||
| query | Yes | ||
| language | No | ||
| includeAdult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It's a search (read-only) operation, so there's no destructive risk, but the description doesn't mention pagination behavior, result limits, whether partial matches are returned, or any rate-limit considerations. For a search tool with zero annotation coverage and no output schema, more behavioral context is needed.
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 a single efficient sentence with zero wasted words. It's appropriately short for a straightforward search tool, though it could use the available space to add distinguishing or behavioral context without becoming verbose.
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?
With no annotations, no output schema, and 0% schema description coverage, this description is thin. For a search tool with 5 parameters and no result-format documentation, the description should explain what results look like, how pagination works, or how it differs from the other film search tools in its sibling list. The current description leaves most operational details to the agent's inference.
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 0%, so the description carries the full burden for explaining parameters, but it explains none of them. There are 5 parameters (query, page, year, language, includeAdult) whose meanings are mostly inferable from their names but not documented. The description does not compensate for the 0% schema coverage, so even though parameter names are somewhat self-explanatory, the baseline of 3 cannot be exceeded since no semantic value is added.
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 'Search The Movie Database for movies' has a clear verb (search) and resource (TMDb movies), so it conveys the basic purpose. However, it doesn't distinguish itself from sibling tools like film_omdb_search or the broader search_across_all tools, which also perform media searches. The use of the full name 'The Movie Database' helps clarity but there's no scoping or distinctiveness.
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?
No guidance is provided on when to use this tool versus alternatives like film_omdb_search, books_google_search, or the aggregated search_across_all tools. The description implies it's for searching TMDb's catalog but offers no exclusions, prerequisites, or when-to-use-alternatives guidance. With 16 siblings including other film/media search tools, this is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scholarly_crossref_get_by_doiCrossref — Get work by DOIC
Fetch Crossref work metadata by DOI.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't mention return format, error behavior for invalid/unknown DOIs, rate limits, or what metadata fields are included. 'Fetch' implies read-only safely, but nothing explicit is stated about behavior beyond the bare action.
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?
A single efficient sentence with zero waste. It's brief to the point of under-specification, but as pure conciseness it's clean and front-loaded with the key purpose.
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?
Despite being a simple one-parameter tool, the zero-annotation, zero-schema-description, no-output-schema context means the description alone must fully specify behavior. For a tool that fetches scholarly metadata by DOI, the description should note what metadata is returned, how to handle malformed DOIs, and alternatives. The single sentence is not complete for an agent deciding whether/how to invoke.
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 0%, so the description must compensate. The single parameter 'doi' has no schema description, and the tool description only repeats the word 'DOI' without adding format guidance (e.g., must include the doi.org prefix? lowercase? DOI encoding requirements). This is a missed opportunity to document the sole parameter's expected format.
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 'Fetch Crossref work metadata by DOI' has a specific verb ('fetch') and resource ('Crossref work metadata'), and it names the key input (DOI). However, it doesn't distinguish it from the sibling scholarly_crossref_search_works or scholarly_openalex_get_work tools, which serve similar purposes across Crossref/OpenAlex.
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?
No guidance on when to use this vs the sibling crossref search tool or openalex_get_work. There's no mention of when DOI is known versus when to use the search tool to find a DOI first. The use case is only implied (you have a DOI).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scholarly_crossref_search_worksCrossref — Search worksC
Search Crossref works with structured query parameters and advanced filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | Number of results (max 1000) | |
| sort | No | Sort order | |
| type | No | Filter by work type | |
| order | No | Sort direction | |
| query | No | General search query | |
| filter | No | Custom filter string (advanced users) | |
| offset | No | Offset for pagination | |
| hasOrcid | No | Filter for works with ORCID authors | |
| queryTitle | No | Search specifically in titles | |
| fromPubDate | No | Filter from publication date (YYYY-MM-DD) | |
| hasAbstract | No | Filter for works with abstracts | |
| hasFullText | No | Filter for works with full text | |
| queryAuthor | No | Search specifically in author names | |
| summaryMode | No | Return simplified results (default: true) or full detailed results | |
| formatAsText | No | Format results as readable text instead of JSON | |
| querySubject | No | Search by subject/topic | |
| untilPubDate | No | Filter until publication date (YYYY-MM-DD) | |
| fromIndexDate | No | Filter from index date (YYYY-MM-DD) | |
| hasReferences | No | Filter for works with references | |
| queryPublisher | No | Search by publisher name | |
| untilIndexDate | No | Filter until index date (YYYY-MM-DD) | |
| queryContainerTitle | No | Search in journal/container titles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't mention rate limits (Crossref has notable API etiquette requirements), pagination limits beyond the schema, whether results are simplified by default, or any consequences of heavy filtering. Since summaryMode defaults true, the behavior of simplified vs detailed output isn't disclosed in the description itself.
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 a single concise sentence that states purpose and key capabilities without waste. It's appropriately sized given the tool's complexity. Could arguably add a thin layer of usage context, but the sentence is well-formed and front-loaded with the core purpose.
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 22 parameters with 100% schema coverage and no output schema, the description is fairly complete but omits guidance on which search fields are most effective together (e.g., queryTitle vs query, boosting combos), typical query construction patterns from Crossref's API, and rate-limit etiquette. For a search tool of this complexity, more usage context around effective query combinations would strengthen completeness.
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% (all 22 params described inline), so the baseline is 3. The description adds no semantic value beyond the schema, but given full coverage the schema does the heavy lifting. The description distinguishes 'structured query parameters' vs 'advanced filtering' (SQL filter string), which maps loosely to the params, but doesn't add meaning beyond schema notes.
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 states 'Search Crossref works with structured query parameters and advanced filtering,' which clearly identifies the verb (search) and resource (Crossref works) as well as the distinguishing feature (structured query parameters, advanced filtering). This differentiates it from siblings via the 'advanced filtering' and 'structured query parameters' framing. However, it doesn't exhaustively name subsections of what kinds of works are covered or typical use cases beyond search.
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?
There is no guidance on when to use this vs alternatives like scholarly_openalex_search_works or scholarly_crossref_get_by_doi. No exclusions or when-not-to-use guidance is given. The phrase 'advanced users' on the filter param hints at usage levels internally but doesn't help choose among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scholarly_openalex_get_workOpenAlex — Get workC
Get an OpenAlex work by id/URI.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It doesn't mention what happens with invalid/malformed IDs, whether the id must be a full URI or accepts partial IDs, whether an OpenAlex ID vs a DOI or other identifier scheme is expected, or any auth/rate-limit considerations. For a tool with zero annotation coverage, this is a significant gap.
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 a single, efficient sentence with no wasted words. However, it leans toward under-specification rather than fruitful conciseness. Two or three additional sentences clarifying ID formats and return behavior would improve it without adding bloat.
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 retrieval tool with no annotations and no output schema, the description should clarify the accepted ID format, error behavior, and what the returned work document contains. The current description only states the basic lookup capability. However, the tool is simple (one param, standard REST GET semantics), which moderately lowers the burden compared to a mutation tool.
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 0%, and the single 'id' parameter has no schema-level description. The tool description only says 'by id/URI' which hints at the format but doesn't clarify whether it accepts a bare OpenAlex ID (e.g., W2741809807), a full URL, a DOI, or all of these. The agent would need to guess the accepted identifier format.
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 'Get an OpenAlex work by id/URI' uses a specific verb (get) and resource (work), and the parameter 'id/URI' clarifies the input format. It distinguishes itself from the search sibling (scholarly_openalex_search_works) which retrieves multiple works, though it doesn't explicitly differentiate from crossref_get_by_doi which serves a similar look-up role.
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?
No guidance on when to use this tool versus alternatives like scholarly_crossref_get_by_doi (which also fetches scholarly works by identifier) or books_openlibrary_get_work. There's no indication of tradeoffs between OpenAlex vs Crossref vs OpenLibrary for work retrieval, nor any scenario where a search sibling should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scholarly_openalex_search_worksOpenAlex — Search worksC
Search OpenAlex works with advanced filtering options for scholarly literature.
| Name | Required | Description | Default |
|---|---|---|---|
| isOa | No | Filter for open access works only | |
| page | No | Page number for pagination | |
| sort | No | Sort order | |
| type | No | Filter by work type | |
| filter | No | Custom filter string (advanced users) | |
| search | No | General search query (title/abstract/fulltext) | |
| perPage | No | Results per page (max 200) | |
| authorId | No | Filter by specific author ID (OpenAlex author ID) | |
| language | No | Filter by language (ISO 639-1 code, e.g., "en") | |
| conceptId | No | Filter by concept/topic ID | |
| journalId | No | Filter by specific journal/venue ID | |
| hasFulltext | No | Filter for works with fulltext available | |
| summaryMode | No | Return simplified results (default: true) or full detailed results | |
| citedByCount | No | Filter by citation count (e.g., ">100", "50-200") | |
| formatAsText | No | Format results as readable text instead of JSON | |
| institutionId | No | Filter by institution ID | |
| publicationYear | No | Filter by specific publication year | |
| publicationYearRange | No | Filter by year range (e.g., "2020-2023") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, but it discloses nothing beyond the search capability. It doesn't state whether results are read-only (implied by 'search' but not stated), rate-limit implications, that results are paginated, or what happens with the summaryMode/formatAsText switches. For a search tool with no annotations and no output schema, it should describe the result shape and any side effects.
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 a single, clear sentence with no wasted words. It is appropriately brief for a search tool whose parameters are well-documented in the schema. Being too long would not help here.
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?
Despite high schema coverage, the tool has 18 parameters with zero annotations and no output schema. The description does not explain what a 'simplified result' (summaryMode default true) versus full detail looks like, how the query/filter system works together, or what the response format is. For a complex, high-parameter search tool, this description under-delivers on context that the schema can't provide.
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 per the rubric the baseline is 3. The description does not add parameter semantics beyond what the schema provides — all 18 parameters (filter, search, sort, publicationYear, etc.) are self-explanatory in the schema. Since coverage is complete, no compensation is needed, but the description also adds no extra nuance or interaction guidance (e.g., how search and filter combine).
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 'Search OpenAlex works with advanced filtering options for scholarly literature' clearly states the verb (search), resource (OpenAlex works), and general capability. However, it doesn't differentiate itself from the sibling scholarly_crossref_search_works or scholarly_search_across_all, both of which also search scholarly literature, so the distinguishing purpose is unclear.
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?
No guidance is given on when to use this tool vs. alternatives like scholarly_crossref_search_works, scholarly_openalex_get_work, or scholarly_search_across_all. There's no mention of when a general search vs. filter-driven search is appropriate, or when the OpenAlex database should be preferred. The 'advanced users' note on the filter param implies some exclusions but doesn't articulate them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scholarly_search_across_allScholarly — Search across academic databasesB
Search simultaneously across OpenAlex and Crossref for academic publications.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | No | DOI to look up | |
| query | No | General search query | |
| title | No | Search in publication titles | |
| author | No | Author name | |
| language | No | Language filter (ISO 639-1 code, e.g., "en" for English) | |
| yearRange | No | Year range (e.g., "2020-2023") | |
| recentYears | No | Filter for publications from the last N years | |
| summaryMode | No | Return simplified results (default: true) or full detailed results | |
| isOpenAccess | No | Filter for open access publications only | |
| includeCrossref | No | Include Crossref in search | |
| includeOpenAlex | No | Include OpenAlex in search | |
| publicationYear | No | Publication year | |
| maxResultsPerSource | No | Maximum results per database |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions the simultaneous cross-source search but gives no detail on behavior differences vs single-source siblings, such as result deduplication, aggregation format, or whether the combined results are merged/interleaved. For a tool that spans two databases with differing schemas, the merged result behavior is a significant unknown.
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?
Single focused sentence that establishes the combined-source nature efficiently. It's appropriately short and front-loaded with the key differentiator. Could add a bit of usage guidance without breaking conciseness, but what's there 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?
With 13 parameters (all optional), no annotations, and no output schema, the description carries substantial burden. The combined-search behavioral implications across two differently-schema'd databases are not explained. The description is adequate for orienting an agent to the tool's purpose but leaves unanswered questions about result merging, deduplication, and source-specific behavior.
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 baseline is 3. The description adds modest value by clarifying that includeCrossref and includeOpenAlex flags control which databases join the simultaneous search, and that maxResultsPerSource applies per database (as evidenced by 'per source' in its schema description). However, the description doesn't clarify interactions between recently added parameters like summaryMode vs full detailed results beyond what schema says.
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?
Description uses specific verb+resource: 'Search simultaneously across OpenAlex and Crossref for academic publications.' This clearly differentiates from siblings like scholarly_openalex_search_works and scholarly_crossref_search_works by establishing it's a combined search. Sibling books_search_across_all has a similar pattern but this description explicitly names both sources, making the purpose clear.
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 implies use when wanting results from both OpenAlex and Crossref simultaneously, which differentiates from the single-source siblings. However, it doesn't explicitly state when NOT to use it (e.g., when you only want one source, or when you need a DOI lookup like scholarly_crossref_get_by_doi). The combination purpose is clear but exclusions aren't spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
se_libris_oai_list_recordsLIBRIS OAI-PMH — ListRecordsC
Harvest LIBRIS via OAI-PMH ListRecords (XML string). Supports resumptionToken.
| Name | Required | Description | Default |
|---|---|---|---|
| set | No | ||
| from | No | ||
| until | No | ||
| metadataPrefix | No | oai_dc | |
| resumptionToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the output is an XML string and supports resumptionToken, but doesn't disclose rate limits, volume constraints, server policies, whether date params are required for resumption, or what happens with large result sets. For a harvesting tool, absent annotation coverage, this is a notable gap.
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 a single concise sentence with two useful pieces of information (XML string output, resumptionToken support). It's efficient with no filler, though it could be slightly more structured given the number of undocumented parameters.
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 5 parameters, 0% schema coverage, no annotations, and no output schema, this description is inadequate. OAI-PMH harvesting involves non-obvious semantics (date formats, set identifiers, token handling, paging behavior) that are entirely unexplained. An agent would be guessing at correct parameter formats.
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 0%, so the description must compensate for the 5 undocumented parameters. It only explains resumptionToken and metadataPrefix defaults to oai_dc, but leaves set, from, and until entirely undefined with no format guidance (e.g., ISO 8601 date syntax). The description fails to compensate for the complete lack of schema documentation.
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 states the verb 'Harvest' with the resource 'LIBRIS via OAI-PMH ListRecords', and clarifies it returns an XML string supporting resumptionToken. It's clear about the primary action, though it doesn't explicitly distinguish this from sibling tools like se_libris_xsearch, so it loses the top score.
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 implies harvesting use-case through the OAI-PMH protocol and mentions resumptionToken, hinting at paginated harvesting scenarios. However, it provides no explicit guidance on when to choose this over sibling tools like se_libris_xsearch or the search-across-all tools, and no mention of typical OAI-PMH usage context (incremental harvesting, date ranges).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
se_libris_xsearchLIBRIS Xsearch — SearchB
Search LIBRIS (Swedish National Library) with structured field support and boolean queries.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of results (max 200) | |
| isbn | No | Search by ISBN (with or without hyphens) | |
| issn | No | Search by ISSN | |
| query | No | General search query | |
| start | No | Start index for pagination | |
| title | No | Search in titles | |
| author | No | Search by author name | |
| format | No | Output format | |
| subject | No | Search by subject/topic | |
| language | No | Filter by language | |
| publisher | No | Search by publisher name | |
| yearRange | No | Search by year range (e.g., "2020-2023") | |
| materialType | No | Filter by material type | |
| publicationYear | No | Search by specific publication year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description mentions 'boolean queries' and structured field support but doesn't disclose key behavioral traits: whether it's read-only, how boolean syntax works, pagination limits beyond what schema states, default output format, rate limits, or auth requirements. For a search tool with zero annotation coverage, more behavioral context is warranted.
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?
Single-sentence description, zero wasted words. The sentence is informative and front-loaded with the action verb ('Search') and resource ('LIBRIS'). This is appropriately concise for a straightforward search tool.
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 search tool with 14 parameters, 100% schema coverage, and no output schema, the description is functional but minimal. The rich parameter set (structured field search) deserves a bit more depth—how booleans work, how the general query interacts with structured fields, and how results are ordered. However, the schema covers parameters well, and the tool's search semantics are mostly self-evident, keeping this at a tolerable 3 rather than lower.
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 schema already documents all 14 parameters with individual descriptions. The description adds marginal value by mentioning 'structured field support and boolean queries,' which hints at how fields (title, author, subject, etc.) and query work together. However, it doesn't explain the boolean query syntax or how fields combine with the general query parameter—that would be useful beyond the schema's per-parameter descriptions.
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 'Search LIBRIS (Swedish National Library) with structured field support and boolean queries' clearly identifies the resource (LIBRIS/Swedish National Library) and the specific capability (structured field search and boolean queries). It distinguishes it from the OpenLibrary/Google/Crossref siblings by naming LIBRIS specifically, though it doesn't explicitly differentiate the boolean/structured-field angle from sibling search tools.
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 states what the tool does but provides no explicit when-to-use guidance or exclusions. Given the dense sibling list with multiple search tools (books_openlibrary_search, books_google_search, scholarly_openalex_search_works), an agent might benefit from knowing when LIBRIS is the right choice (e.g., Swedish national catalog coverage), but no such guidance is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools are clearly distinct by source and action (e.g., openlibrary_get_work vs google_get_volume target different providers). The main ambiguity is between the individual provider searches (books_openlibrary_search, books_google_search) and the aggregated books_search_across_all, which may cause an agent to pick one when the other is more appropriate. Overall though, the provider prefixes and resource nouns differentiate most tools well.
The pattern follows domain_source_action/resource (e.g., books_openlibrary_get_work, scholarly_crossref_search_works), which is fairly consistent. However, verbs vary between search/get/fetch/xsearch/oai_list_records, and there is no uniform approach (search vs fetch vs xsearch). The three main domains (books, scholarly, film, se) use the same prefix style, but the verb choices are inconsistent across tools.
17 tools is on the heavy side for what appears to be a media discovery/search server. Several tools serve nearly identical purposes across providers (get/search for the same kind of content in OpenLibrary, Google, Crossref, OpenAlex, TMDb, OMDb), which inflates the count without adding much functional breadth. However, the count is not extreme and is defensible given the multi-provider aggregator approach.
The search and get lifecycle is well covered for books, scholarly works, and films across multiple providers, and the aggregated cross-search tools are a thoughtful addition. However, there are notable gaps: no CRUD operations (create/update/delete is not expected for read-only catalogs, but the OAI-PMH harvester stands out as an odd inclusion without broader publisher/collection management), and the film domain lacks search-across-all aggregation like books and scholarly have, which is an inconsistency in coverage.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Russian books search, details, and recommendation candidates.
MCP server for Altmetric APIs - track research attention across news, policy, social media, and more
Multi-engine scholarly research server for search, traversal, full text, and reading lists.
Related MCP Servers
- AlicenseAqualityAmaintenanceComprehensive MCP server for academic research workflows, enabling paper searching across multiple sources, manuscript processing with citation placeholders, search caching, and citation export.11MIT
- AlicenseNot gradedqualityDmaintenanceA MCP server for academic literature retrieval, aggregating multiple data sources like arXiv, Crossref, OpenAlex, PubMed, and Semantic Scholar to provide search, details, citations, trends, and recommendations.4MIT
- AlicenseBqualityDmaintenanceMCP server that enables searching books by author via Open Library API and searching keywords inside local text files.2326MIT
- FlicenseNot gradedqualityCmaintenanceA unified MCP server providing programmatic access to three major academic research APIs: Semantic Scholar, OpenAlex, and PubMed.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/baraninja/film-books-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server