Skip to content
Agentmart
Submit a tool

NARA Catalog

Genealogical research in the US National Archives Catalog: records, transcriptions, page images.

Connector by ianderso · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)
Write a review

Chalk Labs

Need help deploying NARA Catalog?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/ianderso-nara-catalog-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Genealogical research in the US National Archives Catalog: records, transcriptions, page images.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Nov 1, 2026.

Tools
19 read · 1 write · 0 delete · 1 not yet classified
Secrets
1 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Python package

Tools by what they do 21

Read from the source code; the running server may list different tools.

Read 19 · Look things up without changing anything.

  • aad_get_record
  • aad_list_series
  • aad_search
  • browse_children
  • get_comments
  • get_extracted_text
  • get_online_availability
  • get_partner_digital_objects
  • get_record
  • get_record_images
  • get_tags
  • get_transcriptions
Show 7 more tools
  • search_by_contribution_text
  • search_comments
  • search_extracted_text
  • search_records
  • search_records_advanced
  • search_tags
  • search_transcriptions

Write 1 · Create, change, send or run things.

  • download_page_image

Not yet classified 1 · We could not tell from the name and description.

  • api_budget

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • NARA_API_KEY

Other settings (environment variables or headers).

  • NARA_CACHE_DIR
  • NARA_MONTHLY_CALL_BUDGET
  • NARA_TIMEOUT

Network hosts it talks to 3

  • archives.gov · found in code
  • catalog.archives.gov · found in code
  • github.com · found in code

Files it touches

  • /tmp/hall-w17050-p51.jpg
  • Your home directory (~)
  • ~/.cache/nara-catalog-mcp
  • Any path the agent passes to its tools

Tools (21)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • aad_get_record

    Read one AAD row in full, with a citation in NARA's recommended form. Returns every field with its code's meaning, and the file, series and record group; the citation carries the date the row was retrieved. A NUMIDENT row gives parents' names and birthplace. It is still a transcription, not the record. Cite it as an electronic record, and get the original where one survives: the SS-5 from SSA, a manifest image.

  • aad_list_series

    List the series in NARA's Access to Archival Databases (AAD), with each file's id. AAD holds name-searchable federal databases the Catalog tools cannot reach: the NUMIDENT (Social Security applications, claims and deaths, 1936-2007), WWII Army enlistments, ship passengers 1820-1912 and casualty files among them. aad_search works on one file at a time, and a big series is split into files: the NUMIDENT by entry type and surname range.

  • aad_search

    Search one AAD file by `query` over the whole row and by `fields`. A wrong field name is refused with the file's search fields. A coded field (a state, a country) cannot be searched by field: put the meaning in `query`. Returns 50 rows a page, each with its record id. A row is a clerk's transcription or index entry, not the record: names are misspelt and dates wrong in it. No file holds everyone, so no hit is not proof of absence. Record ids change when NARA reloads a file; search again rather than reuse an old one.

  • api_budget

    Report the key's Catalog API spend, this session and this month. A key is capped per month and a long sweep can exhaust it. Live calls are kept in a ledger beside the cache, so the month's figure survives restarts. Cached repeats cost nothing and are not counted.

  • browse_children

    List a record's immediate children, one level down the hierarchy. The Catalog nests record group, then series, then file unit, then item. Searching finds a node; this walks down from it, which is how you get from a series you trust to the file unit for one person, and how you find out what else sits alongside a file you already have. A record's own ancestors come back from `get_record`.

  • download_page_image

    Download one page of a record so it can actually be read. This is the step that turns a catalogue hit into evidence. The image is written to disk rather than returned inline — a page scan runs to several megabytes. NARA's media URLs are open and need no key, so this costs nothing against your API allowance. One catalogue call resolves the page list; the download itself is not an API call. A pension file can run to sixty pages and the page you need is rarely the first. Use get_extracted_text or get_transcriptions to find which page carries the fact, then fetch it by the object_id they name.

  • get_comments

    Read other researchers' comments on a record. Comments often say what a file actually contains, where a related file sits, or that the description is wrong. None of it is verified by NARA: it is correspondence between researchers, useful for finding the next record and never a source in itself.

  • get_extracted_text

    Read the OCR text NARA machine-extracted from a record's page images. This is a lead, not evidence. OCR was run over scans of handwriting, carbon copies and microfilm: it drops handwritten pages entirely, and it turns one surname into another silently. Use it to find which page matters, then open that page image with `get_record_images` and cite what you saw there -- never cite the OCR text itself. Returns one entry per digital object, in page order, with the text truncated to `max_chars`.

  • get_online_availability

    List where else this record is available online. NARA records what has been digitised and published elsewhere, including by commercial partners. Use it to resolve a hint from a subscription site back to the archival original: the NAID and the reference unit are what make a citation refindable, and a partner's index entry is not a substitute for the page.

  • get_partner_digital_objects

    List digital object ids a partner has matched to this record. NARA indexes metadata supplied by commercial partners — Ancestry among them — against its own records. A hit tells you the partner holds imagery for this NAID, which is worth knowing when NARA's own pages are not online. An empty list is the common answer and is not an error. It means no partner metadata has been matched, not that no partner holds the record. The ids are pointers into the partner's index, not a citation. Cite the archival record by NAID and reference unit.

  • get_record

    Read one Catalog record in full, by NAID. Returns the scope and content note, the full hierarchy, the holding reference units, and every page-image URL. Use this once a search has given you a NAID worth pursuing.

  • get_record_images

    List a record's page images in page order, each with its object id. These are the evidence. A catalog description summarises a file; it does not tell you what any individual page says, so read the images before citing anything to this record. The object id is what get_extracted_text and get_transcriptions entries point at; pass it, or the page number, to download_page_image.

  • get_tags

    Read the citizen tags on a record. On genealogical records tags are very often the names of the people who appear inside the file -- the widow, the children, the witnesses -- which the title does not carry. A tag is a stranger's reading of the document and is not evidence: follow it to the page image and cite what the image shows.

  • get_transcriptions

    Read the citizen transcriptions of a record's pages. Volunteers have transcribed handwritten pension files, service records and letters that OCR cannot touch, which makes this the fastest way into a document in copperplate. It is still a lead, not evidence: a transcription is one stranger's reading, unreviewed, and names are exactly where such a reading goes wrong. Check the page image before citing a name or date you found here, and cite the image. Returns one entry per transcription with its text, its author and the page it belongs to.

  • search_by_contribution_text

    Search what people wrote on records, and get the records back. This is the difference between searching a catalogue and searching the documents. A pension file titled only with the veteran's name will name his widow, his children and his witnesses in its transcribed text — none of which a title search reaches. Unlike `search_transcriptions` and its siblings, which return the contributions themselves, this filters the main index and returns full record summaries. Use this when you want the record; use those when you want to read what a particular volunteer wrote. A transcription is one volun…

Show 6 more tools
  • search_comments

    Find records other researchers have commented on. Useful for picking up where someone else stopped: a comment naming a surname often marks a file that a researcher has already read. Unverified by NARA, so it points at records rather than settling anything.

  • search_extracted_text

    Find records whose extracted text mentions something. This reaches text contributed by NARA's digitisation partners over the digital objects -- the searchable layer under the scans. It is machine output and is not evidence: it misses handwriting, it mangles names, and a hit means a page probably says this, not that it does. Read the page image before citing anything you find here.

  • search_records

    Search the National Archives Catalog for records. Start with `title` and a specific phrase; the Catalog holds tens of millions of descriptions and a broad `query` will bury the useful hit. A result is a lead: check the hierarchy and dates against what you already know before reading the images. Returns the total number of matches and a page of summaries, each with its NAID, hierarchy (each level with its NAID), holding unit and image count. A series, as a hit or in a hierarchy, also names its `creator`, the office that made it: many series share a title, such as one "Homestead Final Certific…

  • search_records_advanced

    Search the Catalog with the filters that narrow a common name. Every parameter is optional but at least one is required. The filters that earn their keep for research are the date range, `microform_publication` for an M-number you already cite, `record_group_number` or `ancestor_naid` to stay inside one body of records, and `available_online` when you intend to read pages rather than order copies. Results are the same summaries `search_records` returns. Past 10,000 hits use the `next_search_after` cursor rather than `page`; a common surname passes that boundary easily.

  • search_tags

    Find records that carry a given citizen tag. Tags are short, so an exact `tag_is` on a surname is often sharper than a title search: a volunteer who read the file tagged the people in it. What comes back is what a stranger thought the document said -- a lead to the page image, and not evidence.

  • search_transcriptions

    Find records whose citizen transcriptions mention something. This searches the documents rather than the catalogue, which is the difference between finding a pension file titled with the veteran's name and finding the file that names his widow, his children and the neighbours who swore to the marriage. Only transcribed records are reachable this way, so silence here means nobody has transcribed it, not that it does not exist. Returns record summaries. A transcription is a stranger's reading and is not evidence: open the matching page images to see what was written.

Signals

Stars
0
Forks
0
Open issues
0
Weekly downloads
51
Last commit
Oct 6, 2026 (27 days ago)
Last release
Oct 6, 2026 (27 days ago)
Last package publish
Oct 6, 2026 (27 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.ianderso/nara-catalog-mcp
Version
1.1.0
Auth
API key
Packages
pypi nara-catalog-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from ianderso

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get NARA Catalog running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying NARA Catalog?

CallGet help
Cite this page

NARA Catalog MCP server. Agent Mart. https://agentmart.dev/connectors/ianderso-nara-catalog-mcp (last updated 2026-10-24)