Skip to main content
Glama
magicianmarty

heritage-research-mcp

nara_search

Search the US National Archives Catalog by keywords, dates, record groups, and material types, then retrieve paginated results with NARA attribution.

Instructions

Search the US National Archives Catalog. Needs NARA_API_KEY (10,000 queries a month by default).

One page per call, at most 100 records: the API's terms forbid scraping or bulk download. The remaining monthly budget is visible in usage_report. Results include the attribution NARA requires.

Args: q: Search words; supports AND, OR, NOT, wildcards (*) and "exact phrases". title: Words in the title. start_date: Earliest date (YYYY, YYYY-MM or YYYY-MM-DD). end_date: Latest date. available_online: Only records with digitised objects. type_of_materials: e.g. Photographs and other Graphic Materials, Textual Records, Maps. level: series, fileUnit, item, recordGroup, etc. record_group: Record group number, e.g. 109 (Confederate records). ancestor_na_id: Only records beneath this naId. geographic: Geographic subject heading. creators: Creator heading. include_extracted_text: Include OCR text in the results where NARA has it. limit: Results per page (1 to 100). page: Page number from 1. kind: text, image, map, audio or video, mapped to NARA's type of materials (unverified until a key has been used against the live service).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNo
kindNo
pageNo
levelNo
limitNo
titleNo
creatorsNo
end_dateNo
geographicNo
start_dateNo
record_groupNo
ancestor_na_idNo
available_onlineNo
type_of_materialsNo
include_extracted_textNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.3

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses the NARA_API_KEY requirement, the 10,000 queries/month default budget, the hard 'one page per call, at most 100 records' limit, and that the API terms forbid scraping or bulk download. It even flags uncertainty ('unverified until a key has been used against the live service') for the kind mapping. It stops short of describing error behavior or throttling consequences.

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 critical constraints (auth, rate limit, pagination cap, no scraping) are front-loaded before the Args block, and the per-parameter list is compact. Some parameter glosses are one-liners that could carry more, but there is little waste.

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

Completeness4/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 needn't be re-explained; the description instead covers auth, budget, pagination limits and legal constraints. For a 15-parameter tool it is complete enough to invoke correctly, though the lack of sibling routing is a minor gap.

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 0%, so the description must compensate, and it does: every one of the 15 parameters gets a plain-language gloss (query operators for q, date formats for start_date/end_date, examples for type_of_materials and record_group, ranges for limit/page). A few entries are thin ('Words in the title', 'Latest date'), so it is not exhaustive, but it far exceeds the schema.

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?

States a specific verb and resource ('Search the US National Archives Catalog'), so the agent knows exactly what the tool does. It does not, however, explicitly distinguish itself from siblings like nara_children, nara_get_record, or the other search tools (ia_search, dpla_search), leaving that differentiation to inference.

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 usage through the auth requirement and the 'one page per call' constraint, and it names usage_report as where to find remaining budget. But it gives no explicit when-to-use/when-not guidance and no comparison against the sibling NARA tools or the other archive search tools.

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