Open Archives

io.github.coretPublished by GitHub account coretv1.1.1Updated Nov 2, 2026

MCP server for Open Archives: Dutch genealogical records and historical page transcriptions.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & MemoryData & Analytics

Overview

AI-generated overview

Remote MCP server for Open Archives, letting an assistant search Dutch genealogical records, census data, historical weather and page transcriptions.

What you can do
  • Search and retrieve genealogical records: search by name, archive, place, source or event type, show a single record, match a person to birth and death records, and list births, deaths and marriages.
  • Explore archives and statistics: list participating archives, record counts per archive, source type, event type and comments, name and profession frequency, and cross-tabulated breakdowns.
  • Look up historical context: Dutch census data for a place and year, and historical weather measurements from the nearest Dutch weather station.
  • Work with transcriptions: full-text search across page transcriptions, hierarchical browsing, retrieving a single page's transcript with citation, and opening pages…
When to use it
Useful for genealogical and historical research on Dutch ancestors, archives and places: tracing families, checking whether a person appears in birth or death records, and adding census, weather or transcription context to a story. Also handy for statistics about archive holdings and name or profession frequencies.
Requirements
Hosted endpoint at mcp.openarchieven.nl, added as a custom connector; no installation or authentication is required. Self-hosting needs Node.js 18+, npm, and optionally Redis for caching; configuration uses variables such as PORT, UPSTREAM_BASE, RATE_LIMIT_RPS, REDIS_URL and ALLOWED_ORIGINS.
Before you install
Read-only lookups over a public dataset; no accounts or tokens are involved. Tool arguments such as search names and record identifiers are forwarded to the upstream Open Archives API and logged to stdout, so avoid putting sensitive personal details in queries. The deep-zoom viewer loads images from third-party transcription image hosts. Upstream is limited to 4 requests per second per IP.

Installation

In SourceWeft

  1. Open Open Archives in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.coret%2Fopenarchieven-mcp-server/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "open-archives": {
      "type": "http",
      "url": "https://mcp.openarchieven.nl/"
    }
  }
}

README

Open Archives MCP Server

Production-grade hybrid MCP + HTTP + SSE server generated from the Open Archives OpenAPI specification. Covers genealogical records (births, deaths, marriages, censuses), archive statistics, historical weather, and full-text page transcriptions of historical documents.

OpenAPI source used to generate tools:

../api/openapi.yaml   (local)https://api.openarchieven.nl/openapi.yaml   (remote)

Overview

A schema-aware server that automatically converts the OpenAPI specification into callable tools and exposes them through multiple transports:

  • MCP Remote (JSON-RPC over StreamableHTTP)
  • HTTP JSON API
  • SSE streaming with auto-pagination
  • Chunked HTTP streaming with auto-pagination
  • Redis caching (optional)
  • Health checks

Video (Dutch): Help AI met jouw erfgoedservices (via MCP)


Use with Claude

Add as a custom connector

A hosted endpoint is available — no installation required.

In claude.ai or Claude Desktop:

  1. Open Settings → Connectors.
  2. Click Add custom connector.
  3. Enter the URL: https://mcp.openarchieven.nl/
  4. Save and approve when prompted.

No authentication is required — Open Archives is a public dataset.

Example queries

Once the connector is added you can ask Claude, for example:

  • "Who are the ancestors of Johannes Gregorius Marinus Coret? Give me an overview, including source citations in markdown format with the links to the original archives if possible, otherwise provide the Open Archieven links and provide a tree in SVG."
  • "Did Johannes Coret and Antonia Uphus have descendants? Give me an overview, including source citations in markdown format with the links to the original archives if possible, otherwise provide the Open Archieven links, include thumbnails from scans from archival sources if available and provide a tree in SVG."
  • "Provide me with a list of sourcetypes per archive(name) where I can find information about the Coret family. Show the result in a markdown document including links to the search pages on Open Archieven. Instead of the archive code use the ISIL if available."
  • "What was the weather in Amsterdam on 1953-02-01?"
  • "What does the 1850 census say about Utrecht?"

Claude will call the matching tool (search_records, show_record, get_marriages, get_historical_weather, get_census_data, …) and return links to the corresponding record pages on https://www.openarchieven.nl.

Self-hosted

The server speaks MCP over Streamable HTTP; there is no stdio distribution. To run your own instance:

bash
git clone https://github.com/coret/openarchieven-mcp-server.gitcd openarchieven-mcp-servernpm installnpm run generate      # builds generated/tools.json from openapi.yamlnpm run build:viewer  # builds dist/viewer.html (the MCP App)npm start             # listens on http://localhost:3001/

Point your MCP client at http://localhost:3001/ (or your own public URL) the same way as the hosted endpoint above.


Core Features

OpenAPI Auto-Generation

Every API operation becomes a tool automatically via generate.ts.

All 21 operations:

Tool NameDescription
search_recordsSearch genealogical records
show_recordShow a single genealogical record
match_recordMatch a person to birth and death records
get_births_years_agoList births from N years ago
get_birthsFind birth records
get_deathsFind death records
get_marriagesFind marriage records
get_archivesList all archives with statistics
get_record_statsRecord count per archive
get_source_type_statsRecord count per source type
get_event_type_statsRecord count per event type
get_comment_statsComment count statistics
get_family_name_statsFamily name frequency
get_first_name_statsFirst name frequency
get_profession_statsProfession frequency
get_breakdownCross-tabulation grouped by archive, source type, event type, place or year
get_historical_weatherHistorical weather from KNMI
get_census_dataDutch census data 1795–1899
search_transcriptionsFull-text search across page transcriptions of historical documents
browse_transcriptionsHierarchically browse transcriptions by source archive, archive number or inventory
show_transcriptionRetrieve a single page transcription by id

Note: The callback (JSONP) parameter present in the upstream API is excluded from all tools — it is irrelevant in an MCP/JSON-RPC context.


Interactive Transcription Viewer (MCP App)

Beyond the 21 auto-generated tools, the server registers one hand-written tool — view_transcription — that opens transcribed pages in an interactive IIIF deep-zoom viewer (OpenSeadragon) with the transcription text alongside, using the MCP Apps extension (io.modelcontextprotocol/ui).

Tool NameDescription
view_transcriptionOpen one or more transcribed pages (ids: ["NL-SdmGA_1504889_11", …]) in a deep-zoom IIIF viewer with the transcript; optional highlight_term
  • Apps-capable hosts (Claude web/desktop, paid custom connectors) render the viewer (ui://openarchieven/viewer.html) in a sandboxed iframe that loads images directly from the transcription image hosts (CSP-allowlisted as *.transkribus.eu, *.archief.nl, *.archieven.nl, *.memorix.nl). Transkribus and the archief.nl iipsrv server provide true IIIF deep zoom; the preserve*.archieven.nl thumbnail hosts render as flat images.
  • Plain hosts receive a graceful fallback: a text summary with the IIIF/source URLs plus a few inline preview images.

The viewer is a single self-contained dist/viewer.html, bundled at build time with npm run build:viewer (vite + vite-plugin-singlefile); it is not listed by the REST GET /tools endpoint, only via MCP tools/list.


Schema-Perfect Validation

Uses actual OpenAPI parameter schemas. Validates:

  • required parameters
  • integer fields
  • number fields
  • enum values
  • minimum / maximum constraints

Multiple Interfaces

MCP Remote (StreamableHTTP)

text
POST /       ← canonical public endpoint (mcp.openarchieven.nl)POST /mcp    ← local / legacy alias

Stateless JSON-RPC transport — a new MCP server instance is created per request.

Origin validation: Browser requests must come from claude.ai, claude.com, or any domain listed in ALLOWED_ORIGINS. Requests with no Origin header (native MCP clients, curl, server-to-server) are accepted. Unknown origins receive HTTP 403.

HTTP JSON

text
GET  /toolsPOST /tools/:name

SSE Streaming (auto-paginating)

text
GET /events/:name

Chunked HTTP Streaming (auto-paginating)

text
POST /stream/:name

Discovery Metadata (/.well-known)

Static, hand-editable JSON files served verbatim from well-known/:

text
GET /.well-known/mcp/server-card.json   ← SEP-1649 MCP Server CardGET /.well-known/mcp.json               ← alias of the server cardGET /.well-known/agent-card.json        ← A2A v0.3 Agent CardGET /.well-known/agent.json             ← alias of the agent card

Edit well-known/mcp-server-card.json and well-known/agent-card.json directly — no restart required (files are read on each request). Responses are sent with Content-Type: application/json; charset=utf-8 and Cache-Control: public, max-age=3600.


Pagination

Streaming endpoints (/events/:name, /stream/:name) automatically paginate through results for endpoints that support a start offset:

  • Increments start by number_show per page
  • Stops when results are exhausted or after 20 pages (safety cap)
  • SSE sends a : heartbeat comment every 10 seconds to keep connections alive

Redis Cache

Optional Redis support.

If Redis is running, upstream responses are cached with a per-tool TTL tuned to the data's volatility:

CategoryTTLTools
Immutable historicalnever expiresget_historical_weather, get_census_data
Slowly-changing metadata7 daysget_archives
Stats aggregations1 dayget_record_stats, get_source_type_stats, get_event_type_stats, get_comment_stats, get_family_name_stats, get_first_name_stats, get_profession_stats, get_breakdown
Individual record lookups1 dayshow_record, show_transcription
Search-style6 hourssearch_records, match_record, get_births, get_deaths, get_marriages, search_transcriptions, browse_transcriptions
Date-boundnext UTC midnightget_births_years_ago

CACHE_TTL (default 3600) is the fallback for any tool not in the map above.

If Redis is unavailable:

  • server still runs normally (degraded mode)

Rate Limiting

The upstream API enforces 4 requests per second per IP. The server queues all upstream calls through a token-bucket rate limiter (configurable via RATE_LIMIT_RPS).


Health Checks

text
GET /health

Project Files

text
generate.tsserver.tstsconfig.jsonpackage.json.env.examplegenerated/  tools.json  spec.json

Requirements

  • Node.js 18+
  • npm
  • optional Redis server

Configuration

Copy .env.example to .env and adjust:

bash
cp .env.example .env
VariableDefaultDescription
PORT3001HTTP port
OPENAPI_PATH../api/openapi.yamlPath or URL to OpenAPI spec
UPSTREAM_BASEhttps://api.openarchieven.nl/1.1Upstream API base URL
RATE_LIMIT_RPS4Upstream requests per second
REDIS_URLredis://localhost:6379/5Redis connection URL (db 5)
CACHE_TTL3600Fallback cache TTL in seconds (used for tools not in the per-tool map; see Redis Cache)
LOG_LEVELinfotrace debug info warn error fatal
NODE_ENV(unset)Set to production for JSON logs (default: pretty-printed)
ALLOWED_ORIGINS(empty)Extra Origin headers allowed on the MCP endpoint (comma-separated). Claude domains and requests without an Origin header are always allowed.

Install

bash
npm install

Generate Tools from OpenAPI YAML

Run from local spec:

bash
npx tsx generate.ts

Or from remote URL:

bash
npx tsx generate.ts https://api.openarchieven.nl/openapi.yaml

Expected result:

text
Generated 21 toolsOutput: generated/tools.json, generated/spec.json

Creates:

text
generated/tools.jsongenerated/spec.json

Start Server

bash
npx tsx server.ts

Expected startup (development — pretty-printed):

text
[12:00:00] INFO: Open Archieven MCP server started    port: 3001    tools: 21    upstream: "https://api.openarchieven.nl/1.1"    rateLimit: "4 req/s"    redis: "redis://localhost:6379/5"    env: "development"

In production (NODE_ENV=production) each log line is a single JSON object.

Server binds to:

text
http://0.0.0.0:3001

Test All Features


1. Health Check

bash
curl http://localhost:3001/health

Expected:

json
{  "ok": true,  "tools": 21,  "redis": false,  "uptime": 1.23}

2. List Tools

bash
curl http://localhost:3001/tools

Expected:

json
[  "search_records",  "show_record",  "match_record",  "get_births_years_ago",  "get_births",  "get_deaths",  "get_marriages",  "get_archives",  "get_record_stats",  "get_source_type_stats",  "get_event_type_stats",  "get_comment_stats",  "get_family_name_stats",  "get_first_name_stats",  "get_profession_stats",  "get_historical_weather",  "get_census_data",  "search_transcriptions",  "browse_transcriptions",  "show_transcription"]

3. Tool Call

bash
curl -X POST http://localhost:3001/tools/search_records \-H "Content-Type: application/json" \-d '{"name":"Coret"}'

4. Show a Single Record

bash
curl -X POST http://localhost:3001/tools/show_record \-H "Content-Type: application/json" \-d '{"archive":"hua","identifier":"E13B9821-C0B0-4AED-B20B-8DE627ED99BD"}'

5. SSE Streaming

bash
curl -N "http://localhost:3001/events/search_records?name=Coret"

Expected stream:

text
event: pagedata: {...}
event: pagedata: {...}
event: donedata: {}

6. Heartbeat Test

Leave SSE open for 15+ seconds — expect periodic keep-alive lines:

text
: heartbeat

7. Chunked HTTP Streaming

bash
curl -N -X POST http://localhost:3001/stream/search_records \-H "Content-Type: application/json" \-d '{"name":"Coret"}'

Expected (newline-delimited JSON):

text
{"query":{...},"response":{"number_found":...,"docs":[...]}}{"query":{...},"response":{"number_found":...,"docs":[...]}}

8. MCP Initialize

bash
curl -X POST http://localhost:3001/ \-H "Content-Type: application/json" \-H "Accept: application/json, text/event-stream" \-d '{  "jsonrpc": "2.0",  "id": 1,  "method": "initialize",  "params": {    "protocolVersion": "2025-03-26",    "capabilities": {},    "clientInfo": { "name": "test", "version": "1.0" }  }}'

9. MCP List Tools

bash
curl -X POST http://localhost:3001/ \-H "Content-Type: application/json" \-H "Accept: application/json, text/event-stream" \-d '{  "jsonrpc": "2.0",  "id": 2,  "method": "tools/list"}'

10. MCP Call Tool

bash
curl -X POST http://localhost:3001/ \-H "Content-Type: application/json" \-H "Accept: application/json, text/event-stream" \-d '{  "jsonrpc": "2.0",  "id": 3,  "method": "tools/call",  "params": {    "name": "search_records",    "arguments": { "name": "Coret" }  }}'

Redis Testing

Start Redis

bash
redis-server

Restart the MCP server. Expected in /health:

json
{ "redis": true }

Without Redis

Stop Redis and restart. Expected:

json
{ "redis": false }

Common Commands

Regenerate after API changes

bash
npx tsx generate.ts

Restart server

bash
npx tsx server.ts

Run tests

bash
npm test

Tests cover the per-tool TTL strategy (cache-ttl.ts) using Node's built-in test runner — no extra dependencies. The coverage test asserts every tool emitted by generate.ts has an explicit TTL entry, so re-running npm run generate after an upstream OpenAPI change will surface any new tool that needs a TTL decision.


Troubleshooting

Generated files missing

bash
npx tsx generate.ts

Port already in use

Linux / macOS:

bash
lsof -i :3001kill -9 <PID>

Windows:

powershell
netstat -ano | findstr :3001taskkill /PID <PID> /F

Redis not connecting

Server runs normally without Redis. Check REDIS_URL in .env.

Rate limit errors (429)

The upstream API allows 4 req/s per IP. The built-in rate limiter queues requests automatically. If you are running multiple server instances, reduce RATE_LIMIT_RPS or use a shared queue.


Privacy Policy

This server is a thin proxy over the public Open Archives API. It does not require user authentication and does not collect personal data of its own.

The full privacy policies of the operators apply in addition to this section:

Data collection

  • Tool arguments (e.g. a search name, an archive code, a record identifier) are received from the MCP client.
  • HTTP request metadata — method, path, status code, latency, and the source IP — is observed by the reverse proxy in front of the hosted endpoint at mcp.openarchieven.nl.
  • No accounts, cookies, tokens, or session identifiers are collected. The server is anonymous-by-design.

Use and storage

  • Tool arguments are forwarded verbatim over HTTPS to https://api.openarchieven.nl/1.1 to fulfill the request, and the upstream response is returned to the caller.
  • Application logs (tool name, arguments, status, latency) are written to stdout via pino. On the hosted endpoint these logs are ephemeral: they are not written to disk and are lost on process restart. Set LOG_LEVEL=warn to suppress argument logging.
  • Cache (optional): when Redis is configured, upstream responses are cached under keys of the form mcp:<tool>:<sorted-params-json>. The cache contains response bodies only; no user identifiers are stored.

Third-party sharing

No data is sent to any service other than the upstream Open Archives API listed above. There are no analytics, telemetry, advertising, or observability third parties involved.

Data retention

DataRetention
Tool arguments and responsesNot persisted by the application
Application logsEphemeral (stdout, lost on restart)
Redis cache entriesPer-tool TTL (6 hours – 7 days; immutable historical lookups never expire). See Redis Cache.
Reverse-proxy access logsPer the hosting provider's standard retention policy

Security

The MCP endpoint validates the Origin header on every request and rejects unknown browser origins (DNS-rebinding defense). All transport is over HTTPS.

External links surfaced to clients

Tool responses include URLs that point to record pages on https://www.openarchieven.nl. The submission declares the following allowed link URI so users are not prompted to confirm each link:

  • https://www.openarchieven.nl

Contact

For privacy questions or requests, contact:


Recommended Production Upgrades

  • HTTPS reverse proxy (nginx / caddy)
  • PM2 or systemd process manager
  • Structured JSON logging (pino / winston)
  • Request tracing (OpenTelemetry)
  • Auth middleware if server is public-facing
  • Shared Redis for multi-instance deployments

Version

text
v1.0

Schema-perfect OpenAPI-generated MCP server for Open Archives.

Source: README.md at commit 782f89f

Tools

22

search_records

Search Records

Search genealogical records Searches the genealogical dataset and returns found persons and records. Supports filtering by archive, source type, event place, birth place, relation type and country. Results are pageable and sortable. Note: version 1.1 uses `archive_code` instead of `archive`.

Parameterslangnamerequiredsortstartbirthplaceeventplacesourcetypenot_archivenumber_showarchive_codecountry_coderelationtype

show_record

Show Record

Show a single genealogical record Returns one specific genealogical record in JSON format (UTF-8). The response conforms to the Archive 2 All (A2A) model. Also available as XML, GEDCOM, Turtle (TTL) and N-Triples (NT) by changing the file extension in the URL. Note: version 1.1 features improved JSON/XML output and adds N-Triples and Turtle formats.

Parameterslangarchiverequiredidentifierrequired

match_record

Match Record

Match a person to birth and death records Searches the genealogical dataset by exact name and birth year and returns the Open Archives URIs of birth records, death records and registrations in which the person is mentioned.

Parameterslangnamerequiredbirthyearrequired

get_births_years_ago

Births N Years Ago

List births that occurred a specified number of years ago Returns a list of birth records for people born exactly the specified number of years ago from today. Note: version 1.1 uses `archive_code` instead of `archive` and includes the archive name and record URL.

Parametersyearsrequirednumber_show

get_births

Find Births

Finds birth records

Parametersnamerequiredstarteventyeareventplacenumber_showeventprovince

get_deaths

Find Deaths

Finds death records

Parametersnamerequiredstarteventyeareventplacenumber_show

get_marriages

Find Marriages

Finds marriage records of couples (bride or groom)

Parametersname1requiredname2requiredstarteventyeareventplacenumber_show

get_archives

List Archives

List all archives with statistics Returns an array of all participating archives including their archive code (used in other API calls), name, homepage URL, Twitter handle, ISIL code and search URL on Open Archives. Note: version 1.1 adds ISIL codes and removes defunct ArchiefWiki links.

Takes no parameters.

get_record_stats

Record Stats

Record count statistics per archive Returns record count statistics. When no archive is specified, all archives are listed with their total number of records. When an archive code is specified, the source types available for that archive are returned with their individual record counts. Note: version 1.1 uses `archive_code` instead of `archive`.

Parametersarchive_code

get_source_type_stats

Source-Type Stats

Record count statistics per source type Returns statistics about source types. Without an archive_code all source types across the entire dataset are returned with total record counts. With an archive_code, only source types for that archive are returned. Note: version 1.1 uses `archive_code` instead of `archive`.

Parametersarchive_code

get_event_type_stats

Event-Type Stats

Record count statistics per event type Returns statistics about event types. Without an archive_code all event types across the entire dataset are returned with total counts. With an archive_code, only event types for that archive are returned. Note: version 1.1 uses `archive_code` instead of `archive`.

Parametersarchive_code

get_comment_stats

Comment Stats

Comment count statistics Returns the total number of validated comments made on records. When no archive_code is provided, the global total is returned. When an archive code is provided, the count for that archive is returned. Note: version 1.1 uses `archive_code` instead of `archive`.

Parametersarchive_code

get_family_name_stats

Family-Name Stats

Family name frequency statistics Returns the number of times family names appear in events for the selected source types, place and period. Results are ordered by frequency. Open Archives uses this endpoint to power its family name frequency visualisation.

Parameterslangeventtypeeventplacenumber_showeventyearendeventyearstart

get_first_name_stats

First-Name Stats

First name frequency statistics for a given place and year Returns the top-X list of first names in the specified place and year. When a person has multiple forenames, only the first is counted. Currently only Amsterdam is available as a place.

Parameterseventyearrequiredeventplacerequirednumber_show

get_profession_stats

Profession Stats

Profession frequency statistics Returns the number of times professions appear in records for the selected period and place. Results are ordered by frequency. Open Archives uses this endpoint to power its profession frequency visualisation.

Parameterslangeventplacenumber_showeventyearendeventyearstart

get_breakdown

Breakdown Stats

Cross-tabulation aggregation grouped by one dimension Returns record counts filtered by any combination of archive, source type, event type, event place and year range, grouped by ONE chosen dimension (archive, sourcetype, eventtype, place or year). Use this endpoint to answer questions such as "how many Bidprentjes per archive?" or "how many marriages per year in Amsterdam?". The response includes the total filtered record count, the total number of distinct groups (capped at 750) and the top-N groups according to the chosen sort.

Parameterslangsortgroup_byrequiredyear_endeventtypemin_counteventplacesourcetypeyear_startnumber_showarchive_code

get_historical_weather

Historical Weather

Historical weather measurements for a date and location Returns historical weather measurements from the nearest Dutch weather station for the specified date and coordinates. Data sources are the Royal Netherlands Meteorological Institute (KNMI): measurements 1701–1905 and 1901–2014. Note: this endpoint exposes several types of historical datasets, so measurement types and units can vary between records.

Parametersdaterequiredlanglatituderequiredlongituderequired

get_census_data

Census Data (1795–1899)

Dutch census data for a place and year Retrieves census data for a Dutch place or municipality for the census year nearest to the specified year. Available census years: 1795, 1830, 1840, 1849, 1859, 1869, 1879, 1889, 1899. Data sources: Volkstellingen.nl (DANS) and Gemeentegeschiedenis.nl. Either `place` or `gg_uri` must be provided.

Parametersyearrequiredplacegg_uriprovincerichness

search_transcriptions

Search Transcriptions

Full-text search across page transcriptions Performs a full-text search across the page transcriptions of historical documents indexed by Open Archives. Mirrors the search UI at `/transcripties/zoek.php`. Results are ordered by Elasticsearch relevance (the order is fixed and cannot be overridden) and are returned paginated. Each match includes a source citation, page identifier and up to five highlighted text fragments. The set of facets returned depends on the supplied filters.

Parametersqrequiredlangstartyear_endyear_startnumber_showarchive_codearchive_numberinventory_number

browse_transcriptions

Browse Transcriptions

Browse transcriptions hierarchically Returns a hierarchical browse of available page transcriptions. Mirrors `/transcripties/lijst/`. Three modes, depending on the supplied filters: * No filter — top-level list of source archives ordered by total transcription count (descending). * `archive_code` — list of all archive numbers (archieftoegangen) within that archive, ordered by archive number. * `archive_code` + `archive_number` — list of all inventories within that archive number, ordered by inventory number. The order of items is fixed and cannot be overridden. Results are always returned in full (no paging).

Parameterslangarchive_codearchive_number

show_transcription

Show Transcription

Retrieve a single transcription Returns the full transcript of a single page along with its source citation. Mirrors `/transcripties/toon/<id>`. AI-generated summaries are deliberately not returned by this endpoint.

Parametersidrequiredlang

view_transcription

View Transcription (IIIF deep-zoom)

Open one or more transcribed document pages in an interactive deep-zoom viewer with the transcription text alongside. Pass page identifiers returned by search_transcriptions / browse_transcriptions (form <ISIL>_<archive>_<page>, e.g. NL-SdmGA_1504889_11). Optionally highlight a term in the transcript. Hosts without MCP Apps support receive a text summary plus inline preview images.

Parametersidsrequiredhighlight_term

Version history

1
  1. v1.1.1LatestSep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.