Skip to main content
Glama
magicianmarty

heritage-research-mcp

search

Retrieve historical records from five public archives in one query, grouped by source with rights statements and full-text inside books.

Instructions

Search several archives at once and return normalised records grouped by source.

Every record carries rights.reuse (free, attribution, share_alike, non_commercial, no_derivatives, restricted or unknown). This is a filtering aid, not legal advice: unknown means the holder stated nothing.

Args: query: What to look for. Plain words work everywhere. sources: Limit to some of internet_archive, commons, dpla, nara, smithsonian. Default: every source that is ready to use (see list_sources). limit: Records per source (1 to 25). date_from: Earliest year. Applied by the Internet Archive, DPLA and NARA; ignored by the others. date_to: Latest year, applied the same way. fulltext: Also search the text inside Internet Archive books (an experimental endpoint). Returned under fulltext; this is the way to find a name or place inside a memoir or official report. kind: Only this kind of material: text (books, reports, manuscripts), image (photographs, prints), map, audio or video. Each archive is asked in its own vocabulary, and kind_applied in each result says how. Maps are the least uniform: Commons matches on the word "map" in the title and the Internet Archive on its map subjects and collections, so expect some misses and some noise. Every record also carries a best-effort kind.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
queryYes
date_toNo
sourcesNo
fulltextNo
date_fromNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.3

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the per-source date-filter asymmetry, the experimental fulltext endpoint, that `kind` is translated per archive (`kind_applied`) with maps being lossy/noisy, and that `rights.reuse` is a filtering aid rather than legal advice with `unknown` meaning no statement. These are exactly the behavioral traits an agent cannot infer from the schema.

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?

Well structured and front-loaded — summary, then the rights caveat, then a scannable Args block. It runs long, and the enumerated rights values partly restate return-shape territory covered by the output schema, but nearly every line carries actionable guidance.

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 no explanation; the description covers all parameters, the cross-archive behavioral quirks, defaults, and the escape hatch to `list_sources`. An agent has everything needed to call this correctly on the first attempt.

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%, so the description must compensate and it documents all seven parameters with meaning beyond types: sources enumerated (internet_archive, commons, dpla, nara, smithsonian), limit range 1–25, date filtering semantics per archive, fulltext's experimental nature and result location, and `kind`'s vocabulary mapping.

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 opening sentence gives a specific verb and resource with scope: 'Search several archives at once and return normalised records grouped by source.' The 'several archives at once' framing implicitly but clearly separates it from the single-archive siblings (ia_search, commons_search, dpla_search, nara_search).

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?

It states when the multi-source behavior applies and routes to the sibling `list_sources` for the set of ready sources, plus notes that date filters are only honored by some archives. It stops short of explicitly saying when to prefer a single-archive sibling instead (e.g. use ia_search for Internet Archive depth), so it lacks an explicit exclusion.

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