Skip to main content
Glama
magicianmarty

heritage-research-mcp

dpla_search

Search the Digital Public Library of America for items held by US libraries, archives, and museums. Use free-text terms or filters to find historical records and follow landing_url for access.

Instructions

Search the Digital Public Library of America for items held by US libraries, archives and museums.

Needs DPLA_API_KEY. Give a search term, any filter, or both. DPLA indexes descriptions, not the item itself: follow landing_url to the holding institution, and read rights before reusing anything.

Args: q: Free-text search across the record. title: Words in the title. creator: Creator or author. subject: Subject heading. place_state: US state name, e.g. Virginia. date_after: Earliest date (YYYY or YYYY-MM-DD). date_before: Latest date. type: image, text, sound, moving image, physical object, etc. provider: DPLA hub name. data_provider: Contributing institution name. page: Page number from 1. page_size: Results per page (1 to 100). sort_by: A DPLA field such as sourceResource.date.begin. kind: text, image, map, audio or video. Maps are images with the subject "Maps".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNo
kindNo
pageNo
typeNo
titleNo
creatorNo
sort_byNo
subjectNo
providerNo
page_sizeNo
date_afterNo
date_beforeNo
place_stateNo
data_providerNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.3

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and mostly does: it discloses the DPLA_API_KEY requirement and the non-obvious behavioral fact that DPLA indexes descriptions rather than item contents, plus a rights caveat. It omits rate limits, result-count limits, or behavior when no argument is supplied.

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?

Purpose and the scoping caveat are front-loaded, and the per-argument block is dense and each line carries a distinct semantic payload. It is slightly long, but with 14 undocumented parameters the list is justified rather than padding.

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

Completeness5/5

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

An output schema exists, so return values need not be described, and the description instead supplies the missing essentials for this parameter-heavy search: auth requirement, query-vs-filter usage, result interpretation caveat, and rights handling. Nothing an agent needs to call it correctly is absent.

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

Parameters5/5

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

Schema description coverage is 0% across 14 parameters, so the description must compensate and does — it documents each argument's meaning, gives date formats (YYYY or YYYY-MM-DD), a page_size range (1 to 100), sort_by field examples, enum-like values for type and kind, and clarifies that maps are images with the subject 'Maps'. This is far more than the bare schema titles convey.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Search the Digital Public Library of America for items held by US libraries, archives and museums'), and the named repository clearly separates it from the many sibling search tools (ia_search, nara_search, si_search, commons_search) and from dpla_get_item. An agent can tell what this does and which corpus it targets without opening the schema.

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

Usage Guidelines4/5

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

'Give a search term, any filter, or both' states the invocation precondition, and the note to follow `landing_url` and read `rights` gives clear post-search guidance. It does not explicitly name dpla_get_item as the follow-up alternative, so the routing advice stops just short of full when/when-not coverage.

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