URL parameters for AI assistants
PrintMap turns any place on Earth into a print-ready map poster, in the browser, for free — no account, no watermark, no API key. This page is the contract: build a URL and the editor opens with that state already applied, so an assistant can hand someone a finished poster to tweak instead of an empty editor.
There is nothing to call and nothing to sign. The whole state travels in the query string of
https://printm.app/app/. Unknown parameters and out-of-range values are ignored rather
than erroring, so a partly-correct URL still opens a working editor.
Examples
https://printm.app/app/?city=Bergen&lat=60.3913&lng=5.3221&z=12&style=winter&size=a2&title=BERGEN&subtitle=Norwayhttps://printm.app/app/?city=Chamonix&lat=45.9237&lng=6.8694&z=13&style=topo&contours=1&size=a3&title=CHAMONIX&subtitle=Mont%20Blanchttps://printm.app/app/?city=Tokyo&lat=35.6895&lng=139.6917&z=12&style=minimalist&orient=landscape&w=60&h=40&labels=latinhttps://printm.app/app/?lat=45.9763&lng=7.6586&z=13&style=terrain&3d=1&title=MATTERHORNhttps://printm.app/app/?country=JPNParameters
| Parameter | Values | What it does | Example |
|---|---|---|---|
city | free text, max 60 chars | Label for the poster title. Use with lat/lng. | city=Bergen |
lat, lng | decimal degrees | Map centre. Both required together. | lat=60.3913&lng=5.3221 |
z | 1–19 | Zoom. 11 = whole city, 13 = a few neighbourhoods, 15 = streets. | z=13 |
country | ISO 3166-1 alpha-3 | Opens the country-silhouette poster instead of a street map. | country=NOR |
style | one of the 25 ids below | Map style. Unknown ids are ignored. | style=winter |
size | a4, a3, a2, a1 | Paper size. A1 is the largest available. | size=a2 |
w, h | 5–200 (cm) | Exact canvas in centimetres; overrides size. | w=30&h=40 |
orient | portrait, landscape | Applied before size. | orient=landscape |
title | free text, max 60 chars | Turns the poster caption on and sets its first line. | title=BERGEN |
subtitle | free text, max 60 chars | Second caption line, usually the country or a date. | subtitle=Norway |
coords | free text, max 40 chars | Third caption line. Left empty, the app fills in the centre coordinates. | coords=60.39%C2%B0N%205.32%C2%B0E |
labels | both, latin, local | Which script place names print in. | labels=latin |
contours | 1 | Elevation contour lines. | contours=1 |
3d | 1 | 3D shaded terrain (also tilts the view). | 3d=1 |
Style ids
classicminimalistroadtripdiyretronatgeoblueprintcopperduotoneaquarelletonerasphaltmidnightneonforesttopoarcticterrainwintersatellitehybridcandynewspapervintagenauticaldiy opens the custom-colour editor; satellite, hybrid,
aquarelle, toner and winter come from a third-party tile
provider and may be unavailable if its quota is exhausted — the app falls back and says so.
MCP server
The same thing is also an MCP server at
https://printm.app/mcp — JSON-RPC 2.0 over POST, no key, no session, nothing to sign up for.
Three tools: create_map_poster builds the link, find_place searches the 324 cities
and 205 countries that have their own page (returning coordinates, the page and a poster image), and
list_map_styles lists the styles. A GET on the same URL describes the server. The place list
is a plain file too: place-index.json.
Good to know
- Paper goes up to A1 (59.4 × 84.1 cm); custom sizes up to 200 cm a side.
- Free downloads are 72 dpi PNG. SVG and PDF are true vector; STL is a 3D relief model; MP4 is a rotating 3D video.
- Every place has its own page too: 324 cities and 205 countries, each opening the editor centred there.
- A finished map can be shared as a link — the app writes the full state into the URL hash
(
#m=…). That form is compressed, so it cannot be composed by hand; use the parameters above instead. - Map data is © OpenStreetMap contributors. Posters made here can be printed and sold; the attribution line stays on the exported file.
Machine-readable
The same contract as JSON, for agents that would rather parse than read:
{
"name": "PrintMap",
"url": "https://printm.app",
"editor": "https://printm.app/app/",
"cost": "free",
"account_required": false,
"api_key_required": false,
"method": "Build a URL — the editor opens with that state applied. Nothing to call, nothing to sign.",
"params": {
"city": {
"values": "free text, max 60 chars",
"note": "Label for the poster title. Use with lat/lng."
},
"lat|lng": {
"values": "decimal degrees",
"note": "Map centre. Both required together."
},
"z": {
"values": "1–19",
"note": "Zoom. 11 = whole city, 13 = a few neighbourhoods, 15 = streets."
},
"country": {
"values": "ISO 3166-1 alpha-3",
"note": "Opens the country-silhouette poster instead of a street map."
},
"style": {
"values": "one of the 25 ids below",
"note": "Map style. Unknown ids are ignored."
},
"size": {
"values": "a4, a3, a2, a1",
"note": "Paper size. A1 is the largest available."
},
"w|h": {
"values": "5–200 (cm)",
"note": "Exact canvas in centimetres; overrides size."
},
"orient": {
"values": "portrait, landscape",
"note": "Applied before size."
},
"title": {
"values": "free text, max 60 chars",
"note": "Turns the poster caption on and sets its first line."
},
"subtitle": {
"values": "free text, max 60 chars",
"note": "Second caption line, usually the country or a date."
},
"coords": {
"values": "free text, max 40 chars",
"note": "Third caption line. Left empty, the app fills in the centre coordinates."
},
"labels": {
"values": "both, latin, local",
"note": "Which script place names print in."
},
"contours": {
"values": "1",
"note": "Elevation contour lines."
},
"3d": {
"values": "1",
"note": "3D shaded terrain (also tilts the view)."
}
},
"styles": [
"classic",
"minimalist",
"roadtrip",
"diy",
"retro",
"natgeo",
"blueprint",
"copper",
"duotone",
"aquarelle",
"toner",
"asphalt",
"midnight",
"neon",
"forest",
"topo",
"arctic",
"terrain",
"winter",
"satellite",
"hybrid",
"candy",
"newspaper",
"vintage",
"nautical"
],
"limits": {
"max_paper": "A1 (59.4 x 84.1 cm)",
"max_custom_cm": 200,
"free_dpi": 72,
"outputs": [
"PNG",
"SVG",
"PDF",
"STL",
"MP4"
]
},
"mcp": {
"endpoint": "https://printm.app/mcp",
"transport": "Streamable HTTP (JSON-RPC 2.0 over POST)",
"tools": [
"create_map_poster",
"find_place",
"list_map_styles"
],
"auth": "none"
},
"place_index": "https://printm.app/place-index.json",
"place_pages": {
"cities": "https://printm.app/city/",
"countries": "https://printm.app/country/"
}
}
See also llms.txt.