Skip to main content
Glama
baraninja

Books & Film MCP Server

by baraninja

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 install

Development

npm run dev

Build & Run

npm run build
npm start  # stdio transport

Environment Variables

Copy .env.example to .env and configure:

Required:

  • OMDB_API_KEY - OMDb API key

  • TMDB_ACCESS_TOKEN or TMDB_API_KEY - TMDb authentication

Optional but recommended:

  • GOOGLE_BOOKS_API_KEY - Higher API quotas

  • CROSSREF_MAILTO - Polite pool access

  • USER_AGENT_EXTRA - Custom user agent string

Available Tools

📚 Books

  • books_openlibrary_search - Search Open Library works/editions

  • books_openlibrary_get_work - Get work by OLID

  • books_openlibrary_get_edition - Get edition by OLID

  • books_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 filters

  • scholarly_openalex_get_work - Get work by ID/URI

  • scholarly_crossref_search_works - Enhanced Crossref search with structured queries and summary mode

  • scholarly_crossref_get_by_doi - Get work by DOI

🎬 Films

  • film_tmdb_search_movie - Search TMDb movies

  • film_tmdb_get_movie - Get movie details by ID

  • film_omdb_search - Search OMDb by title

  • film_omdb_get - Get by IMDb ID or title

🇸🇪 Swedish Libraries (LIBRIS)

  • se_libris_xsearch - Enhanced search with structured fields and boolean queries

  • se_libris_oai_list_records - OAI-PMH harvesting

  • books_search_across_all - NEW Search Google Books, Open Library, and LIBRIS simultaneously with deduplication

  • scholarly_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 responses

  • formatAsText: true - Human-readable text format instead of JSON

  • deduplicateResults: true (default) - Remove cross-source duplicates

Advanced Filtering

  • recentYears: 5 - Publications from last N years

  • language: "en" - Language filter (ISO 639-1 codes)

  • isOpenAccess: true - Open access publications only

  • publicationYear: 2023 - Specific year filter

Available Resources

Direct URI access to data:

  • openlibrary://works/{olid} - Open Library work

  • openlibrary://editions/{olid} - Open Library edition

  • googlebooks://volumes/{id} - Google Books volume

  • openalex://works/{id} - OpenAlex work

  • crossref://works/{doi} - Crossref work

  • tmdb://movie/{id} - TMDb movie

  • omdb://id/{imdbId} - OMDb by IMDb ID

  • libris://xsearch?q={query} - LIBRIS search

  • libris://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.json

  • macOS: ~/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 file

Open the .mcpb file in Claude Desktop to install.

Search Examples

{
  "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

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

License

MIT

Available Tools

17 tools
books_google_get_volumeGoogle Books — Get volumeC

Fetch a single volume by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_openlibrary_get_editionOpen Library — Get editionC

Fetch an edition by OLID (e.g., OL7058607M).

ParametersJSON Schema
NameRequiredDescriptionDefault
olidYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
olidYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_search_across_allBooks — Search across all databasesB

Search simultaneously across Google Books, Open Library, and LIBRIS for books and publications.

ParametersJSON Schema
NameRequiredDescriptionDefault
isbnNoISBN to search for
titleNoBook title to search for
authorNoAuthor name to search for
subjectNoSubject/topic
languageNoLanguage filter
publisherNoPublisher name
includeLibrisNoInclude LIBRIS (Swedish library) in search
publicationYearNoPublication year
deduplicateResultsNoRemove duplicate books found across multiple sources
includeGoogleBooksNoInclude Google Books in search
includeOpenLibraryNoInclude Open Library in search
maxResultsPerSourceNoMaximum results per database
similarityThresholdNoSimilarity threshold for deduplication (0.1-1.0)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
plotNo
yearNo
titleNo
imdbIdNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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_tmdb_get_movieTMDb — Get movie detailsB

Get TMDb movie details by id with optional append_to_response.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
appendToResponseNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
yearNo
queryYes
languageNo
includeAdultNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
doiYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNoNumber of results (max 1000)
sortNoSort order
typeNoFilter by work type
orderNoSort direction
queryNoGeneral search query
filterNoCustom filter string (advanced users)
offsetNoOffset for pagination
hasOrcidNoFilter for works with ORCID authors
queryTitleNoSearch specifically in titles
fromPubDateNoFilter from publication date (YYYY-MM-DD)
hasAbstractNoFilter for works with abstracts
hasFullTextNoFilter for works with full text
queryAuthorNoSearch specifically in author names
summaryModeNoReturn simplified results (default: true) or full detailed results
formatAsTextNoFormat results as readable text instead of JSON
querySubjectNoSearch by subject/topic
untilPubDateNoFilter until publication date (YYYY-MM-DD)
fromIndexDateNoFilter from index date (YYYY-MM-DD)
hasReferencesNoFilter for works with references
queryPublisherNoSearch by publisher name
untilIndexDateNoFilter until index date (YYYY-MM-DD)
queryContainerTitleNoSearch in journal/container titles

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
isOaNoFilter for open access works only
pageNoPage number for pagination
sortNoSort order
typeNoFilter by work type
filterNoCustom filter string (advanced users)
searchNoGeneral search query (title/abstract/fulltext)
perPageNoResults per page (max 200)
authorIdNoFilter by specific author ID (OpenAlex author ID)
languageNoFilter by language (ISO 639-1 code, e.g., "en")
conceptIdNoFilter by concept/topic ID
journalIdNoFilter by specific journal/venue ID
hasFulltextNoFilter for works with fulltext available
summaryModeNoReturn simplified results (default: true) or full detailed results
citedByCountNoFilter by citation count (e.g., ">100", "50-200")
formatAsTextNoFormat results as readable text instead of JSON
institutionIdNoFilter by institution ID
publicationYearNoFilter by specific publication year
publicationYearRangeNoFilter by year range (e.g., "2020-2023")

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
doiNoDOI to look up
queryNoGeneral search query
titleNoSearch in publication titles
authorNoAuthor name
languageNoLanguage filter (ISO 639-1 code, e.g., "en" for English)
yearRangeNoYear range (e.g., "2020-2023")
recentYearsNoFilter for publications from the last N years
summaryModeNoReturn simplified results (default: true) or full detailed results
isOpenAccessNoFilter for open access publications only
includeCrossrefNoInclude Crossref in search
includeOpenAlexNoInclude OpenAlex in search
publicationYearNoPublication year
maxResultsPerSourceNoMaximum results per database

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
setNo
fromNo
untilNo
metadataPrefixNooai_dc
resumptionTokenNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of results (max 200)
isbnNoSearch by ISBN (with or without hyphens)
issnNoSearch by ISSN
queryNoGeneral search query
startNoStart index for pagination
titleNoSearch in titles
authorNoSearch by author name
formatNoOutput format
subjectNoSearch by subject/topic
languageNoFilter by language
publisherNoSearch by publisher name
yearRangeNoSearch by year range (e.g., "2020-2023")
materialTypeNoFilter by material type
publicationYearNoSearch by specific publication year

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema 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.

Purpose4/5

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.

Usage Guidelines3/5

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

C2.8/5.0
Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count2/5

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.

Completeness3/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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