riksarkivet-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@riksarkivet-mcpfind my great-grandfather's birth record in Heda parish, 1875"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
riksarkivet-mcp
An MCP server for Riksarkivet (the Swedish National Archives) open data. It lets an AI assistant do Swedish genealogy research from start to finish: work out which parish a village belongs to, find the digitised church books, and fetch and read the scanned pages, getting back a ready-made source citation.
It only uses Riksarkivet's public, keyless APIs:
API | Used for |
archive catalogue, topography, indexed birth/marriage/title-deed registers | |
browsing digitised volumes and fetching page images |
Metadata is open data and the images are public domain (PDM 1.0).
Tools
Tool | What it does |
| Free text / name / place / year search, filterable by record type ( |
| Full entry of an indexed register record: parents, occupations, residence, witnesses, volume and page |
| Village/farm/parish → parish and province, including historical parishes (e.g. Harstad, merged into Väderstad 1891) |
| A parish's digitised church-book volumes grouped by series (C births, A I household examinations, E I marriages, F deaths, …), with date ranges and volume ids |
| Walk any archive in IIIF (fonds → series → volumes), including court records, military rolls and maps |
| A volume's date range, remarks, and image number → printed page number map |
| Returns a page image (whole page or a zoomed region) plus its Källhänvisning and viewer link |
Typical flow
find_place("Kälstad") → Källstad, Källstads församling, Östergötland
parish_archive("Heda", "C") → C/5 (1870-1888) [volume: A0001234] …
volume_pages("A0001234") → Bild:Sida map
get_page("A0001234", image=57) → scan + "Heda kyrkoarkiv, Födelse- och dopböcker, SE/VALA/00128/C/5 (1870-1888), bildid: A0001234_00057, sida 108"
get_page("A0001234", image=57, region="pct:0,40,60,30", width=2000) → zoom on one entryRelated MCP server: Riksarkivet MCP Server
Limitations
Coverage of images. Only volumes that Riksarkivet scanned itself are served over IIIF, and for most parishes that means roughly 1840–1900. Other periods may be available on sok.riksarkivet.se or through ArkivDigital.
Indexed registers are regional. The searchable birth and marriage registers mainly cover Skåne, Blekinge, Halland and parts of Norrland. An empty search result does not mean a record doesn't exist, so read the church books with
get_pageinstead.No census search. The census databases (folkräkningar) and other database searches on sok.riksarkivet.se have no public API and are not included.
Install
Requires uv.
git clone https://github.com/bucklo/riksarkivet-mcp
cd riksarkivet-mcp
uv syncClaude Code
claude mcp add riksarkivet -- uv run --directory /path/to/riksarkivet-mcp riksarkivet-mcpClaude Desktop / other clients
{
"mcpServers": {
"riksarkivet": {
"command": "uv",
"args": ["run", "--directory", "/path/to/riksarkivet-mcp", "riksarkivet-mcp"]
}
}
}Development
uv run pytest # unit tests
uv run pytest -m live # smoke tests against the real APIs
uv run ruff check .License
MIT. Not affiliated with Riksarkivet.
Available Tools
7 toolsbrowseA
List the children of any Riksarkivet archive unit in IIIF (fonds -> series -> volumes). Use for non-church archives too (courts, military rolls, maps). archive_id is the id from search_records or parish_archive.
| Name | Required | Description | Default |
|---|---|---|---|
| archive_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden; "List" at least signals a read-only operation and the IIIF/hierarchy framing explains the shape of the traversal. It says nothing about pagination, ordering, or what a leaf unit returns, and an output schema exists, which covers return values but not these behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, then scope expansion, then the parameter hint. The "fonds -> series -> volumes" notation is dense but earns its space by conveying the hierarchy in a few tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter listing tool with an output schema, the description covers what it returns conceptually (children/next level), which archives it applies to, and where the id comes from. Remaining gaps around pagination and terminal-level behavior are minor given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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: it explains that archive_id is the identifier obtained from search_records or parish_archive. That provenance is genuine added meaning beyond a bare string parameter, though the expected format is not shown.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the children of any Riksarkivet archive unit") and clarifies the hierarchy traversed (fonds -> series -> volumes). It implicitly separates itself from search_records/parish_archive (which supply the id) and from volume_pages, though the contrast with volume_pages is never made explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: use it for hierarchical browsing including non-church material (courts, military rolls, maps), and points to search_records or parish_archive as the source of archive_id. It stops short of stating when not to use it, e.g. at the page level where volume_pages applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_placeB
Look up a place (village, farm, parish) in Riksarkivet's topographic register and show which parish/province it belongs to, including historical parishes (e.g. Harstad parish, merged into Väderstad 1891).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It implies a benign read lookup, but never states whether matching is exact, fuzzy, or spelling-tolerant, whether the historical-parish note changes result shape, or how results are ordered/limited. The note that merged historical parishes are handled is genuinely useful behavioral context, keeping this above a 2.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the purpose front-loaded and a compact parenthetical example that earns its place by explaining the historical-parish behavior. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need no explanation, and the description correctly conveys the domain and the historical-merger nuance. What is missing for a name-resolution tool is the matching semantics (fuzzy vs. exact) and how 'limit' constrains results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, and the description says nothing about 'name' (exact vs. partial, alternative spellings, case sensitivity) or 'limit' (default 10, max results). With low coverage the description was expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('look up') plus the resource ('a place ... in Riksarkivet's topographic register') and the exact result ('which parish/province it belongs to'). The scope is clear enough to separate it from siblings like search_records or get_register_record, though it never names those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (resolving a place name to its parish/province) but gives no explicit when-to-use / when-not-to-use guidance and does not point to any sibling for related needs. The historical-parish example hints at the intended use but is not a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageA
Fetch a scanned page so it can be read. Returns the image plus a ready-made source citation (Källhänvisning) and viewer link.
volume: volume id like 'A0006950', a manifest URL, or a full image id
like 'A0006950_00010' (then image is taken from it).
image: image number (Bild). page: printed page number (Sida) instead of image.
width: output width in px (400-3000). Use ~1600 for an overview, then zoom with region.
region: 'full', 'pct:x,y,w,h' (percent of the page) or 'x,y,w,h' pixels - e.g.
'pct:50,0,50,50' = top-right quarter, good for reading small handwriting.
rotation: 0/90/180/270.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| image | No | ||
| width | No | ||
| region | No | full | |
| volume | Yes | ||
| rotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the return payload (image + citation + viewer link) plus hard constraints: width must be 400–3000, rotation limited to 0/90/180/270, region accepted formats. It omits failure modes (e.g. nonexistent page/image) and any access or rate-limit notes, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return value in the first sentence, then a compact per-parameter block where every line adds information. No redundant restatement of the tool name or filler prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Six parameters, one required, fully documented, and an output schema exists so return values need not be spelled out further. The remaining gap is inter-tool context — when this is preferable to volume_pages and how page/image numbering relates to that sibling's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must supply everything, and it does: volume accepts an id, manifest URL, or full image id with a concrete example; image vs page (Bild vs Sida) is explicitly disambiguated; region documents all three syntaxes with a worked example ('pct:50,0,50,50' = top-right quarter); width and rotation give valid ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch a scanned page so it can be read') and immediately names what comes back: the image, a ready-made source citation, and a viewer link. The purpose is unmistakable, though it never contrasts itself with the sibling volume_pages tool, which likely lists pages for a volume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers workflow guidance inside the parameter notes — 'Use ~1600 for an overview, then zoom with region', and 'good for reading small handwriting' — which implicitly tells the agent how to iterate. However, it gives no tool-level guidance about when to call get_page rather than volume_pages, browse, or search_records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_register_recordA
Full details of an indexed register entry (birth, marriage, title deed) by its id from search_records - parents, occupations, residence, witnesses, volume/page.
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it discloses the kinds of details returned (parents, occupations, residence, witnesses, volume/page) and implies a read-only lookup. However, it does not explicitly state side effects, permissions, or behavior when the id is invalid or missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with no wasted wording. Purpose, id source, examples, and return categories are front-loaded efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return values need not be fully documented. The description still usefully names the main data categories and explains how to obtain record_id, though it could be slightly more explicit about the tool's read-only nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and does not explain record_id. The description compensates by saying the id comes from search_records, which gives the parameter clear provenance and usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific retrieval action for a specific resource: full details of an indexed register entry by id. It gives examples (birth, marriage, title deed) and explicitly ties the id to search_records, which distinguishes it from the sibling search tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates the tool is used after search_records to retrieve an entry by its id. It does not explicitly exclude alternatives such as get_page or volume_pages, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parish_archiveA
List the digitised volumes of a parish's church archive (kyrkoarkiv), grouped by series, with date ranges and the volume id to pass to volume_pages/get_page.
parish: e.g. "Heda", "Väderstad", "Appuna".
series: optional filter on series code or name, e.g. "C" (födelse- och dopböcker),
"A I" (husförhörslängder), "E I" (vigsel), "F" (död), "A II" (församlingsböcker),
"B" (flyttningslängder).
Only volumes scanned by Riksarkivet itself are listed (mostly c. 1840-1900). Lines
starting "Se:" mean the records are bound into another listed volume.
| Name | Required | Description | Default |
|---|---|---|---|
| parish | Yes | ||
| series | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: results are grouped by series, include date ranges, are limited to Riksarkivet-scanned material in a roughly 1840-1900 window, and "Se:" lines indicate records bound into another volume. It omits pagination, result-size limits, and what happens when a parish has no scanned volumes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and its downstream use are front-loaded in the first sentence, then parameters, then scope caveats. The series example list is long but earns its space precisely because the schema documents nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with an output schema and no annotations, this covers purpose, parameter meaning, scope limits and output quirks (the "Se:" convention) that the output schema alone may not explain. Gaps are minor: no pagination or empty-result behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: parish gets real examples ("Heda", "Väderstad", "Appuna") and series is explained as filtering on either code or name with five decoded examples. It stops short of stating matching rules (case sensitivity, diacritics, whether parish must be exact).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb and resource ("List the digitised volumes of a parish's church archive") plus the grouping and returned fields, and it explicitly routes the agent to volume_pages/get_page, distinguishing it from every sibling. An agent knows exactly what this produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes the browse-then-fetch workflow by naming the downstream tools and their use of the returned volume id, and it scopes the result set ("Only volumes scanned by Riksarkivet itself... mostly c. 1840-1900"). It does not contrast itself with siblings browse or search_records, so the choice among discovery tools is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_recordsA
Search Riksarkivet's catalogue and indexed registers.
text: free text. name: person name. place: parish/place name.
year_min/year_max: restrict by year.
record_type: birth, marriage, title_deed, register, volume, record, archive (fonds),
series, place, parish, settlement, agent. Omit for everything.
only_digitised: only material with scanned images.
limit (max 100) / offset for paging.
Note: indexed birth/marriage registers cover only some regions; use parish_archive +
get_page to read church books directly elsewhere (e.g. Östergötland).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| text | No | ||
| limit | No | ||
| place | No | ||
| offset | No | ||
| year_max | No | ||
| year_min | No | ||
| record_type | No | ||
| only_digitised | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden and it delivers the non-obvious facts: limit is capped at 100, offset provides paging, and coverage gaps exist in the indexed registers. It does not state whether multiple filters are ANDed or how results are ordered, which are the remaining behavioral unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded, the parameter lines are terse and scannable, and the caveat note is placed last where it matters most. Structurally efficient, though the parameter block is list-like enough that it reads as a schema restatement in places.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described. What an agent needs to call it correctly, including the filter vocabulary, the 100-result cap, paging, and the regional-coverage caveat, is present. Only the filter-combination semantics and defaults are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must define all nine parameters and it does: text, name, place, the year bounds, only_digitised, limit/offset, and the full record_type vocabulary. It stops short of explaining how parameters combine and omits the default limit of 20 and default offset of 0.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Search Riksarkivet's catalogue and indexed registers.' That is concrete and distinguishable from siblings like get_register_record or get_page, though the only explicit sibling routing appears in the trailing note (parish_archive + get_page) and nothing distinguishes it from browse or volume_pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note gives an explicit when-not and alternative: indexed registers cover only some regions, so use parish_archive + get_page for church books elsewhere (e.g. Östergötland). It also says record_type can be omitted 'for everything.' It does not advise when to choose text vs name search, or when browse would be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_pagesA
Show a volume's title, date range, remarks and the mapping image number -> printed page number (Bild:Sida). volume: id like 'A0006950' or a manifest URL.
| Name | Required | Description | Default |
|---|---|---|---|
| volume | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. 'Show' implies a read-only lookup, and it enumerates the returned fields, but it says nothing about behavior for an unknown id, whether the mapping can be very large, or whether a manifest URL triggers a network fetch. With an output schema present, the return-value gap is partly covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the returned content, followed by a short parameter hint. The '(Bild:Sida)' gloss and stray line break are minor noise but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with an output schema, the description covers purpose, output content, and accepted input forms. Missing only edge-case behavior (invalid id, large volumes) and sibling routing, which keeps it below a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 0% schema description coverage, so the description must compensate — and it does, giving a concrete example id format ('A0006950') and an alternative input form (manifest URL) that the bare string schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Show') and a concrete payload: a volume's title, date range, remarks, and image-number-to-printed-page mapping. That is clearly distinct from siblings like get_page (single page) and search_records, though the description never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it tells you to supply a volume id or manifest URL, which suggests 'call this to resolve a volume before fetching pages'. There is no explicit when-to-use versus get_page or browse, and no stated prerequisites or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
browse - First observed
find_place - First observed
get_page - First observed
get_register_record - First observed
parish_archive - First observed
search_records - First observed
volume_pages
TDQS
Scored across 7 tools
Most tools map to distinct steps of the archival workflow: search -> record detail -> place lookup -> archive browsing -> volume metadata -> page image. The only real overlap is parish_archive vs browse, since both list children of an archive unit, but the description explicitly scopes browse to non-church archives, which mitigates confusion.
There is a partial verb_noun pattern (search_records, get_register_record, get_page, find_place, volume_pages) but it is broken by bare 'browse' and the noun-only 'parish_archive'. Readable, but conventions are mixed rather than predictable.
Seven tools is a tight, well-scoped set that mirrors the research workflow without redundancy. Each tool earns its place, from search to image retrieval.
The surface covers the full chain of finding, inspecting and reading digitised material, plus citations. Minor gaps exist: no tool to resolve an archive/fonds-level description or to start browsing from a root archive id, and no structured export of a record's citation.
Maintenance
Related MCP Connectors
SEC filings, Wikipedia, arXiv, US Census and more for AI agents, with every answer source-linked.
Academic literature search, retrieval, and private library management on top of OpenAlex.
Curated knowledge API for AI agents - skill packs, semantic search, validated patterns.
Machine-readable utilities and datasets for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to create, edit, and query genealogical data from GEDCOM files. Supports complex genealogy searches, automatic data enrichment from web sources, relationship analysis, and biography generation for individuals and families.17MIT
- AlicenseAqualityAmaintenanceEnables users to search and access digital collections from the Swedish National Archives (Riksarkivet) through multiple APIs. Supports searching records by keywords, exploring collections, and downloading historical images and documents.227Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to query genealogy data from GEDCOM files with 24 tools for search, navigation, relationship analysis, and timeline events.1MIT
- AlicenseAqualityAmaintenanceEnables AI agents to search and retrieve consolidated Swedish statutes (SFS) from the Riksdagen open data API, with verifiable citations and persistent identifiers.465 PyPIApache 2.0