About AtlasPI
The first REST API and MCP server for structured historical geography. Built for AI agents. Free and public. Apache 2.0
What AtlasPI is
AtlasPI is a structured historical-geographic database — empires, kingdoms, sultanates, republics, confederations, dynasties, cities, trade routes, and major events — designed specifically for consumption by AI agents, researchers, and digital-humanities developers.
It is not an internal company intranet, ERP, or a login-protected application. Every endpoint returns JSON with no authentication, no API key, no registration, no rate limit for reasonable use.
Temporal range: 4500 BCE → 2024 CE (6500+ years).
Geographic range: all inhabited continents.
License: Apache 2.0 for both code and data.
Why AtlasPI exists
Existing geographic datasets fall into three camps, all inadequate for modern AI:
- Natural Earth / OSM — modern-only, no temporal dimension.
- Wikidata — comprehensive but unstructured for geographic queries; no boundaries, no cross-referenced dynasty chains.
- Academic GIS databases — often paywalled or requiring specialized software.
AI agents answering questions about history need:
- Semantic queries, not just SPARQL. "Which empires existed
in 1250" should be
GET /v1/entities?year=1250, not a 40-line query. - One-call contextualization. "Tell me about the world in 1250"
should return entities + events + periods + cities + chains in a single response
(this is what
/v1/snapshot/year/1250does). - Cross-resource linkage. "Which periods did the Roman Empire
overlap with?" should be
GET /v1/entities/{id}/periods. - Ethical framings preserved. "Aztec Imperial Period" is labeled
region=americas, withhistoriographic_notedocumenting Spanish conquest. Native names come first (Mēxihcah, Tawantinsuyu, 漢朝).
AtlasPI provides all of this in a uniform REST API and MCP server.
Quick start
Try it right now — no setup
curl https://atlaspi.cra-srl.com/v1/snapshot/year/1492 | jq .periods
curl https://atlaspi.cra-srl.com/v1/events/on-this-day/07-14
curl https://atlaspi.cra-srl.com/v1/entities/1/similar?limit=5
Python
import requests
BASE = "https://atlaspi.cra-srl.com"
# What was happening in 1250 globally?
r = requests.get(f"{BASE}/v1/snapshot/year/1250")
world = r.json()
# -> periods (by region), entities (top by confidence), events, cities, chains
# Find similar entities
r = requests.get(f"{BASE}/v1/entities/1/similar?limit=10")
similar = r.json()["similar"] # weighted algorithm: type+temporal+duration+confidence
# Events on a specific day of year
r = requests.get(f"{BASE}/v1/events/on-this-day/08-15") # includes Indian Independence
events = r.json()["events"]
MCP server (for Claude Desktop / Claude Code)
pip install atlaspi-mcp
Add to your MCP client config:
{
"mcpServers": {
"atlaspi": {
"command": "python",
"args": ["-m", "atlaspi_mcp"]
}
}
}
34 tools are exposed: search_entities, snapshot_at_year,
find_similar_entities, on_this_day,
list_historical_periods, world_snapshot, and more.
Ethics first
History is contested. AtlasPI's 10 ETHICS principles are baked into the data model, not an afterthought:
- ETHICS-001 — Native-language primary names. Not "Aztec" but Mēxihcah; not "Inca" but Tawantinsuyu; not "Han" but 漢朝.
- ETHICS-002 — Conquests labeled as CONQUEST, not softened to "succession". REVOLUTION, GENOCIDE, DEPORTATION are explicit event types.
- ETHICS-003 — Contested territories show all versions with dates and sources.
- ETHICS-005 — Boundary provenance transparent
(
natural_earth/aourednik/historical_map/approximate_generated). You can always trace the source. - ETHICS-006 — Geographic guard against fuzzy-match displacement.
- ETHICS-007 — Academic terminology. GENOCIDE, ETHNIC_CLEANSING, COLONIAL_VIOLENCE are event types — no euphemisms.
- ETHICS-008 —
known_silencefield for events with suppressed or erased documentation. - ETHICS-009 — Colonial renamings documented (Constantinople↔Istanbul, Königsberg↔Kaliningrad, Lvov/Lviv/Lemberg/Lwów).
- ETHICS-010 — Trade routes involving slavery flagged explicitly.
See docs/ethics/ for the full ADRs.
Who should use this?
AI agents (LLMs with tools)
Connect via the MCP server or call the REST API directly.
/llms.txt is provided for discoverability; /.well-known/ai-plugin.json
supports the OpenAI plugin spec.
Historians and researchers
Query for specific entities, events, or periods. Every record has academic sources and confidence scores. Export as GeoJSON for GIS, CSV for analysis.
Educators
Use the interactive map (/app) in classrooms. Embed snapshots or comparisons in educational content.
Developers
Build historical-timeline apps, "on this day" features, dynasty visualizers, empire-boundary maps. The API is CORS-enabled.
Data sources
| Source | License | Use |
|---|---|---|
| Natural Earth (ne_110m_admin_0) | Public domain | Modern country boundaries |
| aourednik/historical-basemaps | CC BY 4.0 | 54 historical map snapshots (4500 BCE → 2025) |
| Academic citations | Per-source | 2,400+ Cambridge / Oxford / regional specialist references |
Open source
Everything is on GitHub under Apache 2.0. Contribute entities, events, chains, or periods via pull request.
Version info
Currently at v6.30.0. Live stats: /v1/stats. OpenAPI spec: /openapi.json. LLMs.txt: /llms.txt.