Archive & Atlas MCP server Read-only · unauthenticated
Archive & Atlas speaks the Model Context Protocol. An MCP-capable assistant can search the archive and pull records as structured data — no scraping, no key, and nothing to sign up for.
POST https://archiveandatlas.com/mcpinitialize → tools/list → tools/call. ping answers {}.curl -s -X POST https://archiveandatlas.com/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
protocolVersion your client sends in initialize. Send none and it answers 2025-06-18. It is not pinned to a single revision, and it does not negotiate.Free-text and filtered search across published records. Every argument is optional — call it bare and you get the most recent records.
One published record with its particulars, its license, a link to the Markdown copy, and a ready citation in all three formats. slug is required.
search_archive · arguments
1940 — not a year range.open or restricted.get_record · arguments
/library/{slug}.Both tools answer in the standard MCP envelope: result.content[0] is a text block whose string is JSON. Parse the string, not the envelope.
{
"total": 128,
"count": 5,
"results": [
{
"slug": "grand-canyon-north-rim",
"title": "Grand Canyon, North Rim",
"maker": "A. Maker",
"year": 1962,
"place": "Arizona",
"subject": "Landscape",
"rights": "open",
"url": "https://archiveandatlas.com/library/grand-canyon-north-rim"
}
]
}
total is how many records matched; count is how many came back under your limit. A maker we do not know is null, never the string “Unknown”.
{
"slug": "...", "title": "...", "description": "...", "maker": "...",
"date_earliest": 1962, "date_latest": null,
"place": "...", "subject": "...", "medium": "...",
"rights": "open",
"license": "https://creativecommons.org/...",
"url": "https://archiveandatlas.com/library/{slug}",
"markdown": "https://archiveandatlas.com/library/{slug}.md",
"citation": { "chicago": "...", "bibtex": "...", "ris": "..." }
}
slug — is a JSON-RPC error with code -32602. A slug that simply is not published is not an error: it returns a normal result with isError: true and an error string inside the text block. Handle both.serverInfo (archive-and-atlas v1.0.0), capabilities.tools, and short instructions. Echoes your protocolVersion.{}.id is a notification: it gets HTTP 202 and an empty body, per JSON-RPC. Do not wait for a reply to one.-32601, Method not found. There are no resources and no prompts — tools only.