Resources and prompts
Resources
The server publishes seven read-only resources. A client that supports resources can read them without spending a tool call, and they are cacheable — each carries a long TTL, because they change when the renderer ships, not per request.
| URI | Contents |
|---|---|
maproll://grammar | How region data, markers and routes are encoded, and the rule that numeric values and text categories never mix. |
maproll://catalog/scopes | Every geography: world, 17 groups, and the country scopes. |
maproll://catalog/themes | The six themes and what each is for. |
maproll://catalog/icons | The 30 marker icons, grouped. |
maproll://catalog/projections | Available projections and when each is right. |
maproll://catalog/patterns | Texture fills for hatching a category onto a choropleth. |
maproll://examples | Real requests paired with the arguments that answer them. |
maproll://grammar is the one that matters most. Most bad maps come from a
model guessing at the data encoding, and that resource removes the guessing.
Prompts
Three prompts, invoked from your client's prompt menu.
mapped_episode
Turns a dataset into a map in the house style of Mapped, the weekly maproll series: dark theme, the unit stated in the subtitle and the legend, and a short piece of prose that leads with the gap in the numbers rather than with the map.
Arguments: dataset, and optionally angle if you already know the finding.
readme_map
Makes a map and returns a paste-ready snippet — markdown or HTML — with alt text that says what the map shows rather than "map". Defaults to a light theme, since most READMEs render on a light ground.
Arguments: subject, and optionally format.
refine_map
Changes an existing map in plain English: "make Ukraine blue", "add the airports", "switch to a diverging scale".
Arguments: map (the URL) and change.
Why these are prompts, not tools
A natural-language refine_map tool would have to call a language model
server-side — an extra round trip, a bill maproll pays, and a slower map.
As a prompt, the work happens in the model already running in your client,
reading maproll://grammar and calling create_map or add_layers directly.
Nothing is sent anywhere else, and the result is better, because the model
doing the reasoning is the one you chose.