AtlasPI

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.

862
Historical entities
490
Events
48
Historical periods
94
Dynasty chains
110
Cities
41
Trade routes
2,400+
Academic sources
34
MCP tools

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:

AI agents answering questions about history need:

  1. Semantic queries, not just SPARQL. "Which empires existed in 1250" should be GET /v1/entities?year=1250, not a 40-line query.
  2. 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/1250 does).
  3. Cross-resource linkage. "Which periods did the Roman Empire overlap with?" should be GET /v1/entities/{id}/periods.
  4. Ethical framings preserved. "Aztec Imperial Period" is labeled region=americas, with historiographic_note documenting 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:

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

SourceLicenseUse
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.

Source on GitHub Interactive API Docs Try the map

Version info

Currently at v6.30.0. Live stats: /v1/stats. OpenAPI spec: /openapi.json. LLMs.txt: /llms.txt.