NARA Catalog
Genealogical research in the US National Archives Catalog: records, transcriptions, page images.
Connector by ianderso · GitHub account verified by the MCP Registry
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.
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.
About
Reviews
Write a reviewNo 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_recordaad_list_seriesaad_searchbrowse_childrenget_commentsget_extracted_textget_online_availabilityget_partner_digital_objectsget_recordget_record_imagesget_tagsget_transcriptions
Show 7 more tools
search_by_contribution_textsearch_commentssearch_extracted_textsearch_recordssearch_records_advancedsearch_tagssearch_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_DIRNARA_MONTHLY_CALL_BUDGETNARA_TIMEOUT
Network hosts it talks to 3
archives.gov· found in codecatalog.archives.gov· found in codegithub.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_recordRead 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_seriesList 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_searchSearch 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_budgetReport 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_childrenList 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_imageDownload 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_commentsRead 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_textRead 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_availabilityList 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_objectsList 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_recordRead 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_imagesList 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_tagsRead 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_transcriptionsRead 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_textSearch 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_commentsFind 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_textFind 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_recordsSearch 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_advancedSearch 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_tagsFind 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_transcriptionsFind 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
- Repository
- github.com/ianderso/nara-catalog-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from ianderso
- 0.610score
Polish Archives Indexes
ianderso
Search Geneteka, the Poznań Project and BaSIA for Polish vital records; fetch archive scans.
ConnectorAFreshness: ALocal★ 1↓ 55/wkClaude Code +5 - 0.605score
Gramps Evidence
ianderso
Read/write a self-hosted Gramps Web family tree where every fact carries a citation.
ConnectorAFreshness: ALocal↓ 104/wkClaude Code +5 - 0.604score
FamilySearch
ianderso
Genealogical research on FamilySearch: historical places, indexed records, page images, the tree.
ConnectorAFreshness: ALocal↓ 90/wkClaude Code +5 - 0.597score
German Archives (DDB; BW, NRW, Rhineland-Palatinate and Hesse registers)
ianderso
German archive finding aids (DDB); civil and church registers of BW, NRW, RLP and Hesse.
ConnectorAFreshness: ALocal↓ 58/wkClaude Code +5 - 0.588score
Norway Archives
ianderso
Norway's church books, censuses and scans, National Library books, and place names.
ConnectorAFreshness: ALocal↓ 41/wkClaude Code +5 - 0.587score
UK National Archives Discovery
ianderso
Search the UK National Archives' Discovery catalogue; find Chelsea pensioners' papers in WO 97.
ConnectorAFreshness: ALocalRead-only↓ 39/wkClaude Code +5
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.
Cite this page
NARA Catalog MCP server. Agent Mart. https://agentmart.dev/connectors/ianderso-nara-catalog-mcp (last updated 2026-10-24)