RewindMap
Server Details
Historical borders and dated map events with source attribution and coverage limits.
- Status
- Healthy
- Uptime
- 100.0% over 41 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: link generation, polity lookup, event search, and temporal polity listing. While find_polity and world_at_year both relate to polities/borders, their query models (entity by name/QID vs. year-based snapshot list) are clearly differentiated in the descriptions.
All names use consistent snake_case. Three follow a clear verb_noun pattern (create_video_link, find_polity, search_events), while world_at_year is a noun phrase, which is a minor deviation but still readable and predictable.
Four tools is well within the expected 3-15 range and each tool serves a distinct, necessary purpose for the historical map/video domain. There is no redundancy or bloat.
The set covers the core workflows: discovering polities, searching events, listing entities by year, and generating video links. Minor gaps exist around place/region resolution and detailed event retrieval, but these are workable given the descriptions and link outputs.
Available Tools
4 toolscreate_video_linkARead-onlyIdempotentInspect
Build a link that opens RewindMap's short-video maker preloaded with a map clip: borders (and optional event layers) changing from one year to another over a place, with an optional title and map labels. The visitor opens the link and taps Download to get a watermarked MP4 (vertical 9:16 for Shorts/Reels/TikTok, or landscape). Rendering happens in the visitor's browser; this tool returns the link only, never a video file.
| Name | Required | Description | Default |
|---|---|---|---|
| bbox | No | Area to frame [west, south, east, north] in degrees. Default: Europe and the Mediterranean. | |
| title | No | Text burned into the top of the video. | |
| format | No | vertical | |
| labels | No | Map labels drawn at fixed points in every frame. | |
| layers | No | Layers shown in the clip. | |
| seconds | No | ||
| to_year | Yes | Year. Negative is BC: -500 = 500 BC. There is no year 0. | |
| from_year | Yes | Year. Negative is BC: -500 = 500 BC. There is no year 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent, non-open-world read, so the bar is lower. The description goes beyond them by disclosing the critical trait that rendering happens in the visitor's browser and that the tool returns only a link, never a video file, plus the watermarked-MP4 download step. It stops short of auth or rate-limit details.
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 sentences, front-loaded with the core purpose and artifact. Each sentence carries distinct information (what the clip shows, what the visitor gets, what the tool returns), though the dense phrasing is slightly long for the amount of structured data already available.
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?
There is no output schema, so the description must explain the return value, and it does so explicitly ('returns the link only, never a video file'). With 8 parameters at 75% schema coverage, the remaining gap is minor, making this largely complete for an agent to call it correctly.
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 75%, so the schema already documents most parameters including defaults and bbox ordering. The description adds conceptual meaning (borders/event layers, year transitions, title, labels, vertical vs landscape) but no format or constraint details beyond the structured fields, matching the baseline for high schema coverage.
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 (build a link) plus the resource (RewindMap short-video maker with a map clip) and describes exactly what the link produces. It is clearly distinguishable from find_polity, search_events, and world_at_year, which retrieve data rather than generate a shareable artifact.
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 usage by explaining what the generated link does, but never states when to choose this over the sibling tools (e.g. 'use this to produce a shareable clip, use world_at_year for raw data'). No explicit alternatives or exclusions are offered, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_polityARead-onlyIdempotentInspect
Look up a state or empire by name or any of its Wikidata labels and aliases (substring, case-insensitive), or by Wikidata QID. Returns its lifespan, every border snapshot with its bounding box, and links.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Site language for returned page and map links. Use the language the user is writing in. | en |
| query | Yes | Name, e.g. "Ottoman", or a QID, e.g. "Q12560". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: substring, case-insensitive matching over labels/aliases, and the fact that the result set includes lifespan, every border snapshot with bounding box, and links. It does not say what happens on zero or multiple matches.
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?
Two tight sentences: the first front-loads the lookup keys and matching semantics, the second states what is returned. No filler or restatement of the tool name.
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?
With no output schema, the description correctly takes on the burden of describing returns (lifespan, border snapshots with bounding boxes, links) and the matching rules. The only gaps are ambiguity handling for multiple matches and the empty-result case, which are minor for a read-only lookup.
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 100%, so the schema baseline is 3. The description adds meaning beyond the schema's terse 'Name, e.g. Ottoman or a QID' by clarifying that matching also covers all Wikidata labels and aliases and is substring/case-insensitive, which materially affects how the agent should phrase the query. The 'lang' parameter is left entirely to the schema.
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 gives a specific verb and resource ('look up a state or empire') plus the exact matching keys (name, Wikidata labels/aliases, QID), so the agent immediately knows this is an entity-resolution tool rather than a temporal or event tool. It stops short of naming sibling tools like world_at_year to explicitly route the agent, so it lands just below the top tier.
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 implied by the lookup semantics and the accepted identifier forms, which tells the agent it should be used when the user names a polity. There is no explicit when-to-use/when-not statement and no mention of alternatives such as world_at_year for time-based queries or search_events for event lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eventsARead-onlyIdempotentInspect
Search map events: battles (Wikidata), UCDP armed-conflict events since 1989, volcanic eruptions VEI 4+ (Smithsonian GVP), significant earthquakes (NOAA), witnessed meteorite falls, and UNESCO World Heritage sites (undated). Month/day bounds match only events recorded at least that precisely; undated heritage sites match only searches without a date bound. Results are sorted by date.
| Name | Required | Description | Default |
|---|---|---|---|
| bbox | No | Bounding box [west, south, east, north] in degrees. | |
| lang | No | Site language for returned page and map links. Use the language the user is writing in. | en |
| layer | No | ||
| limit | No | ||
| query | No | Substring of the event name or detail, e.g. "Vienna". | |
| to_date | No | Source-calendar date fields at month precision, or day precision when day is supplied. Historical sources may use Julian dates; bounds compare their recorded fields without calendar conversion. | |
| to_year | No | Year. Negative is BC: -500 = 500 BC. There is no year 0. | |
| from_date | No | Source-calendar date fields at month precision, or day precision when day is supplied. Historical sources may use Julian dates; bounds compare their recorded fields without calendar conversion. | |
| from_year | No | Year. Negative is BC: -500 = 500 BC. There is no year 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, so safety is covered; the description adds genuinely new behavior: result ordering by date, precision-gated date matching, and the temporal floor (UCDP since 1989, heritage sites undated). It stops short of describing result shape or how limit/pagination interacts with large result sets.
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 what is searched, then matching semantics, then sort order — three sentences, no filler. The dataset enumeration is long but each item is load-bearing for understanding coverage, so little is wasted.
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 9-parameter, nested-object tool with no output schema and no required parameters, the description covers the hard parts (date semantics, dataset coverage, ordering) while annotations cover safety. It omits any indication of the returned record shape and how limit defaults/caps interact with the result set, which is the main remaining gap.
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 78% (near the high baseline), and the description still adds meaning the schema does not: how from/to bounds behave against imprecisely recorded dates and that undated records are excluded by any date bound. The layer parameter carries only an enum in the schema and its values are only inferable from the dataset list in the description.
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 (search) plus resource (map events) and enumerates the six underlying datasets with their provenance (Wikidata battles, UCDP, Smithsonian GVP, NOAA, meteorite falls, UNESCO). This scope is distinctive enough to separate it from siblings like world_at_year (a point-in-time snapshot) and find_polity without opening any 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?
Gives concrete conditions governing effective use: month/day bounds only match events recorded at that precision, and undated heritage sites match only dateless searches. That is a real when-to-use/when-not rule, but it never names an alternative tool or states when another sibling should be preferred instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
world_at_yearARead-onlyIdempotentInspect
List states, empires and cultures with an OpenHistoricalMap border snapshot in a given year, optionally overlapping a region. Coverage is incomplete; an empty result does not establish historical absence.
| Name | Required | Description | Default |
|---|---|---|---|
| bbox | No | Bounding box [west, south, east, north] in degrees. | |
| lang | No | Site language for returned page and map links. Use the language the user is writing in. | en |
| year | Yes | Year. Negative is BC: -500 = 500 BC. There is no year 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely useful non-structured context: the dataset is incomplete and an empty result must not be read as historical absence, which materially changes how an agent reports the result.
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?
Two sentences, no filler, and the core capability is front-loaded ahead of the caveat. Every clause carries information.
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?
With no output schema, the description does enough: it characterizes the returned entities and warns about empty results. It could say more about result shape or whether the snapshot includes geometry, but nothing critical is missing for correct invocation.
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 100%, so the schema already documents bbox, lang and the negative-year/BC convention. The description only restates the year and optional region at a high level and says nothing about the lang parameter, so baseline 3 applies.
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 ('List') plus the exact resource (states, empires and cultures with an OpenHistoricalMap border snapshot) and scopes it by year and optional region. Very clear on its own, but it never names an alternative like find_polity, so the agent must infer sibling routing from the singular-vs-list distinction.
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 implied by the scope ('in a given year, optionally overlapping a region'), but there is no explicit when-to-use or when-not-to-use guidance relative to find_polity or search_events. The coverage caveat is about interpreting results rather than about choosing this tool.
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.
3 tool updates
- Changed
find_polity1 field changed- added
Input schema / properties / langAdded value: +{ + "default": "en", + "description": "Site language for returned page and map links. Use the language the user is writing in.", + "enum": [ + "en", + "fr", + "es", + "pt", + "de", + "it", + "nl", + "ja", + "ru", + "pl", + "tr", + "id", + "hi", + "ar" + ], + "type": "string" +}
- Changed
search_events1 field changed- added
Input schema / properties / langAdded value: +{ + "default": "en", + "description": "Site language for returned page and map links. Use the language the user is writing in.", + "enum": [ + "en", + "fr", + "es", + "pt", + "de", + "it", + "nl", + "ja", + "ru", + "pl", + "tr", + "id", + "hi", + "ar" + ], + "type": "string" +}
- Changed
world_at_year1 field changed- added
Input schema / properties / langAdded value: +{ + "default": "en", + "description": "Site language for returned page and map links. Use the language the user is writing in.", + "enum": [ + "en", + "fr", + "es", + "pt", + "de", + "it", + "nl", + "ja", + "ru", + "pl", + "tr", + "id", + "hi", + "ar" + ], + "type": "string" +}
1 tool update
- Added
create_video_link
1 tool update
- Changed
search_events2 fields changed- added
Input schema / properties / from_dateAdded value: +{ + "description": "Source-calendar date fields at month precision, or day precision when day is supplied. Historical sources may use Julian dates; bounds compare their recorded fields without calendar conversion.", + "properties": { + "day": { + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "month": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "year": { + "description": "Year. Negative is BC: -500 = 500 BC. There is no year 0.", + "type": "integer" + } + }, + "required": [ + "year", + "month" + ], + "type": "object" +} - added
Input schema / properties / to_dateAdded value: +{ + "description": "Source-calendar date fields at month precision, or day precision when day is supplied. Historical sources may use Julian dates; bounds compare their recorded fields without calendar conversion.", + "properties": { + "day": { + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "month": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "year": { + "description": "Year. Negative is BC: -500 = 500 BC. There is no year 0.", + "type": "integer" + } + }, + "required": [ + "year", + "month" + ], + "type": "object" +}
3 tool updates
- First observed
find_polity - First observed
search_events - First observed
world_at_year
Related MCP Connectors
Search and read published animated maps of borders and history. No sign-in needed.
Administrative boundaries for every place on Earth: search, reverse lookup, polygons, areas.
geoBoundaries MCP — open database of political administrative boundaries.
Living, source-backed timelines of long-running events, with a quote and source per entry.
Related MCP Servers
- AlicenseAqualityCmaintenanceHistorical geography for AI agents: 1,000+ polities with real GeoJSON borders, dynastic succession chains, events, cities and trade routes from 4500 BCE to today, each with cited academic sources and a confidence score. Wraps the free AtlasPI REST API (https://atlaspi.it) as 39 MCP tools — no API key required, Apache-2.0.391Apache 2.0
- AlicenseAqualityAmaintenanceInteractive historical atlas of China that resolves ancient and modern places, classical poetry sites, dynastic boundaries, city administrative genealogies, and historical figure trajectories.34,350GPL 3.0
- AlicenseAqualityBmaintenanceServes country facts, administrative boundary GeoJSON, and per-region population, area, and capital statistics as structured data, letting an AI assistant build interactive maps, comparisons, and multilingual geography content instead of reciting prose. It also normalises region names across sources so boundary shapes can be joined to their statistics.3MIT
- AlicenseAqualityBmaintenanceEnables users to resolve historical US land and jurisdiction questions: which county held a given spot on a specific date, where a federal land description (PLSS) falls on the ground, and which National Archives series and file hold the case behind a land patent. All lookups are read-only and can be used alongside archive-search tools to route records requests to the right office.9MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.