Tool tree
gradeNot graded
get-app-guideAnswer
Reads the app's own reference guide: what each tool, dialog and map layer does, and how to build a link that opens the map in a given state (viewport, layers, markers, drawn geometry, a planned route). Call it without a section for the summary and the list of sections, then again with the one you need.
View tool JSON
{
"name": "get-app-guide",
"kind": "answer",
"impl": "imperative",
"description": "Reads the app's own reference guide: what each tool, dialog and map layer does, and how to build a link that opens the map in a given state (viewport, layers, markers, drawn geometry, a planned route). Call it without a section for the summary and the list of sections, then again with the one you need.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"section": {
"description": "Heading of the section to read, as listed without one.",
"type": "string"
}
}
}
}get-map-viewAnswer
Returns what the map currently shows: its centre, zoom, visible bounding box, the layers that are on, and the shareable URL of this exact state.
View tool JSON
{
"name": "get-map-view",
"kind": "answer",
"impl": "imperative",
"description": "Returns what the map currently shows: its centre, zoom, visible bounding box, the layers that are on, and the shareable URL of this exact state.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}
}set-map-viewAction
Moves the map. Give a centre, a zoom (0 = whole world, 19 = a building), or both.
View tool JSON
{
"name": "set-map-view",
"kind": "act",
"impl": "imperative",
"description": "Moves the map. Give a centre, a zoom (0 = whole world, 19 = a building), or both.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "WGS-84 latitude"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "WGS-84 longitude"
},
"zoom": {
"type": "number",
"minimum": 0,
"maximum": 20
}
}
}
}fit-map-to-areaAction
Zooms the map so that the given bounding box fits the screen — the way to show a whole region, town or route extent.
View tool JSON
{
"name": "fit-map-to-area",
"kind": "act",
"impl": "imperative",
"description": "Zooms the map so that the given bounding box fits the screen — the way to show a whole region, town or route extent.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"west": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "WGS-84 longitude"
},
"south": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "WGS-84 latitude"
},
"east": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "WGS-84 longitude"
},
"north": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "WGS-84 latitude"
}
},
"required": [
"west",
"south",
"east",
"north"
]
}
}list-map-layersAnswer
Lists the map layers this app offers, with the one-letter code each is switched on by. A "base" layer is the map itself (only one at a time); an "overlay" is drawn on top of it (any number). premiumFromZoom marks a layer that needs a paid account past that zoom.
View tool JSON
{
"name": "list-map-layers",
"kind": "answer",
"impl": "imperative",
"description": "Lists the map layers this app offers, with the one-letter code each is switched on by. A \"base\" layer is the map itself (only one at a time); an \"overlay\" is drawn on top of it (any number). premiumFromZoom marks a layer that needs a paid account past that zoom.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}
}set-map-layersAction
Switches map layers on and off by their code (see list-map-layers). Naming overlays replaces the set that is on; leaving them out keeps it.
View tool JSON
{
"name": "set-map-layers",
"kind": "act",
"impl": "imperative",
"description": "Switches map layers on and off by their code (see list-map-layers). Naming overlays replaces the set that is on; leaving them out keeps it.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"base": {
"description": "Code of the base map to show.",
"type": "string"
},
"overlays": {
"description": "Codes of the overlays to leave on; [] takes them all off.",
"type": "array",
"items": {
"type": "string"
}
}
}
}
}search-placesAnswer
Searches for a place by name, category, OSM element id (e.g. "way/123"), coordinates, a bounding box or pasted GeoJSON, and fills the app's result list. Results are ranked around the current map view. Show one on the map with show-search-result.
View tool JSON
{
"name": "search-places",
"kind": "answer",
"impl": "imperative",
"description": "Searches for a place by name, category, OSM element id (e.g. \"way/123\"), coordinates, a bounding box or pasted GeoJSON, and fills the app's result list. Results are ranked around the current map view. Show one on the map with show-search-result.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "What to look for."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"query"
]
}
}show-search-resultAction
Draws one result of the last search-places on the map and moves the map to it.
View tool JSON
{
"name": "show-search-result",
"kind": "act",
"impl": "imperative",
"description": "Draws one result of the last search-places on the map and moves the map to it.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"index": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "The result's index as search-places returned it."
}
},
"required": [
"index"
]
}
}clear-search-resultsAction
Takes the searched places off the map and empties the list.
View tool JSON
{
"name": "clear-search-results",
"kind": "act",
"impl": "imperative",
"description": "Takes the searched places off the map and empties the list.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}
}list-object-categoriesAnswer
Finds the POI categories the objects tool can show — search them by name in the UI language ("water", "shelter", "castle"). Each row carries the filter that show-objects takes.
View tool JSON
{
"name": "list-object-categories",
"kind": "answer",
"impl": "imperative",
"description": "Finds the POI categories the objects tool can show — search them by name in the UI language (\"water\", \"shelter\", \"castle\"). Each row carries the filter that show-objects takes.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"search": {
"description": "Part of a category name; omitted lists the first ones.",
"type": "string"
}
}
}
}show-objectsAction
Shows POIs of the given categories (filters from list-object-categories) within the current map view, and returns what was found. The map has to be at zoom 8 or closer, and a wide view finds a lot — zoom in on what is being asked about first.
View tool JSON
{
"name": "show-objects",
"kind": "act",
"impl": "imperative",
"description": "Shows POIs of the given categories (filters from list-object-categories) within the current map view, and returns what was found. The map has to be at zoom 8 or closer, and a wide view finds a lot — zoom in on what is being asked about first.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"categories": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
},
"description": "Filters as list-object-categories gives them."
}
},
"required": [
"categories"
]
}
}describe-placeAnswer
Says what is at a point on the map: the nearest addressable place, the OSM elements right there, and the areas containing it. Shows them on the map as it does.
View tool JSON
{
"name": "describe-place",
"kind": "answer",
"impl": "imperative",
"description": "Says what is at a point on the map: the nearest addressable place, the OSM elements right there, and the areas containing it. Shows them on the map as it does.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"lat",
"lon"
]
}
}plan-routeAction
Plans a route through the given waypoints and draws it on the map, opening the route finder. Returns its length and estimated time. "trip" mode reorders the waypoints into the shortest round of them all; "route" keeps the given order.
View tool JSON
{
"name": "plan-route",
"kind": "act",
"impl": "imperative",
"description": "Plans a route through the given waypoints and draws it on the map, opening the route finder. Returns its length and estimated time. \"trip\" mode reorders the waypoints into the shortest round of them all; \"route\" keeps the given order.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"points": {
"minItems": 2,
"type": "array",
"items": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"lat",
"lon"
]
},
"description": "Waypoints, from start to finish."
},
"transportType": {
"description": "How the route is travelled; defaults to what the app is set to (initially hiking).",
"type": "string",
"enum": [
"bike-osrm",
"car-osrm",
"foot-osrm",
"bike",
"car",
"car4wd",
"carnotoll",
"easyhike",
"ebike",
"foot",
"gravelbike",
"hiking",
"motorcycle",
"mtb",
"racingbike",
"stroller",
"manual"
]
},
"mode": {
"type": "string",
"enum": [
"route",
"trip"
]
}
},
"required": [
"points"
]
}
}get-route-itineraryAnswer
Returns the turn-by-turn steps of the route currently planned, with the distance and time of each. Distances are in metres, times in seconds.
View tool JSON
{
"name": "get-route-itinerary",
"kind": "answer",
"impl": "imperative",
"description": "Returns the turn-by-turn steps of the route currently planned, with the distance and time of each. Distances are in metres, times in seconds.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}
}add-markerAction
Puts a labelled marker on the map. The icon is `poi:<name>` for a bundled map icon (e.g. `poi:peak`) or `fa:<name>` for a Font Awesome one; anything else shows as its first two characters.
View tool JSON
{
"name": "add-marker",
"kind": "act",
"impl": "imperative",
"description": "Puts a labelled marker on the map. The icon is `poi:<name>` for a bundled map icon (e.g. `poi:peak`) or `fa:<name>` for a Font Awesome one; anything else shows as its first two characters.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"label": {
"type": "string"
},
"color": {
"description": "CSS hex colour, alpha allowed (#ff0000, #ff000080).",
"type": "string"
},
"markerType": {
"type": "string",
"enum": [
"pin",
"square",
"ring"
]
},
"icon": {
"type": "string"
}
},
"required": [
"lat",
"lon"
]
}
}draw-lineAction
Draws a line through the given points. Use draw-area for a filled shape.
View tool JSON
{
"name": "draw-line",
"kind": "act",
"impl": "imperative",
"description": "Draws a line through the given points. Use draw-area for a filled shape.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"points": {
"minItems": 2,
"type": "array",
"items": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"lat",
"lon"
]
}
},
"label": {
"type": "string"
},
"color": {
"description": "CSS hex colour, alpha allowed (#ff0000, #ff000080).",
"type": "string"
},
"width": {
"type": "number",
"minimum": 1,
"maximum": 20
}
},
"required": [
"points"
]
}
}draw-areaAction
Draws a filled area through the given points. The ring is closed on its own — do not repeat the first point.
View tool JSON
{
"name": "draw-area",
"kind": "act",
"impl": "imperative",
"description": "Draws a filled area through the given points. The ring is closed on its own — do not repeat the first point.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"points": {
"minItems": 3,
"type": "array",
"items": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"lat",
"lon"
]
}
},
"label": {
"type": "string"
},
"color": {
"description": "CSS hex colour, alpha allowed (#ff0000, #ff000080).",
"type": "string"
},
"fillColor": {
"description": "CSS hex colour, alpha allowed (#ff0000, #ff000080).",
"type": "string"
}
},
"required": [
"points"
]
}
}list-drawingsAnswer
Lists what is drawn on the map, with the index each one is removed by.
View tool JSON
{
"name": "list-drawings",
"kind": "answer",
"impl": "imperative",
"description": "Lists what is drawn on the map, with the index each one is removed by.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}
}remove-drawingAction
Removes one drawn marker, line or area by its index from list-drawings. Removing shifts the indexes of what comes after it, so list them again between removals.
View tool JSON
{
"name": "remove-drawing",
"kind": "act",
"impl": "imperative",
"description": "Removes one drawn marker, line or area by its index from list-drawings. Removing shifts the indexes of what comes after it, so list them again between removals.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"marker",
"line"
]
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"kind",
"index"
]
}
}open-drawing-toolAction
Opens a drawing toolbar so the user can carry on by hand — clicking points onto the map, restyling or labelling what is drawn.
View tool JSON
{
"name": "open-drawing-tool",
"kind": "act",
"impl": "imperative",
"description": "Opens a drawing toolbar so the user can carry on by hand — clicking points onto the map, restyling or labelling what is drawn.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"draw-points",
"draw-lines",
"draw-polygons"
]
}
},
"required": [
"kind"
]
}
}get-elevationAnswer
Reads the height above sea level of the given points from the terrain model, in metres. A point the model has no data for comes back as null.
View tool JSON
{
"name": "get-elevation",
"kind": "answer",
"impl": "imperative",
"description": "Reads the height above sea level of the given points from the terrain model, in metres. A point the model has no data for comes back as null.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"points": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"lat",
"lon"
]
}
}
},
"required": [
"points"
]
}
}get-route-elevationAnswer
Climb, drop and the highest and lowest point of the route currently planned, in metres.
View tool JSON
{
"name": "get-route-elevation",
"kind": "answer",
"impl": "imperative",
"description": "Climb, drop and the highest and lowest point of the route currently planned, in metres.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}
}get-map-featuresAnswer
Returns everything the user has on the map — drawings, the planned route, searched places, shown objects, imported tracks — as one GeoJSON FeatureCollection.
View tool JSON
{
"name": "get-map-features",
"kind": "answer",
"impl": "imperative",
"description": "Returns everything the user has on the map — drawings, the planned route, searched places, shown objects, imported tracks — as one GeoJSON FeatureCollection.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"deliver": {
"description": "`download` writes the answer to a JSON file instead of returning it — for a result too big to carry back through the agent's own channel.",
"type": "string",
"enum": [
"return",
"download"
]
}
}
}
}download-map-featuresAction
Saves what is on the map to a file in the user's downloads, as GPX, GeoJSON or KML.
View tool JSON
{
"name": "download-map-features",
"kind": "act",
"impl": "imperative",
"description": "Saves what is on the map to a file in the user's downloads, as GPX, GeoJSON or KML.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"gpx",
"geojson",
"kml"
]
},
"elevation": {
"description": "Fill elevation from the terrain model into what is written; `missing` only where there is none.",
"type": "string",
"enum": [
"none",
"missing",
"all"
]
},
"name": {
"type": "string"
}
},
"required": [
"format"
]
}
}sample-elevation-gridAction
Reads the terrain model over a rectangle on a regular grid — one call instead of one per point. Elevations come back row-major from the north-west corner (row 0 is the northern edge), in metres, `null` where the model has no data. Ask for derivatives to get slope in degrees and aspect as degrees clockwise from north pointing downhill, computed from each cell's neighbours.
View tool JSON
{
"name": "sample-elevation-grid",
"kind": "act",
"impl": "imperative",
"description": "Reads the terrain model over a rectangle on a regular grid — one call instead of one per point. Elevations come back row-major from the north-west corner (row 0 is the northern edge), in metres, `null` where the model has no data. Ask for derivatives to get slope in degrees and aspect as degrees clockwise from north pointing downhill, computed from each cell's neighbours.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"west": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"south": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"east": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"north": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"spacing": {
"type": "number",
"minimum": 1,
"maximum": 10000,
"description": "Distance between grid points, in metres."
},
"derivatives": {
"description": "Also return slope and aspect per cell.",
"type": "boolean"
},
"deliver": {
"description": "`download` writes the answer to a JSON file instead of returning it — for a result too big to carry back through the agent's own channel.",
"type": "string",
"enum": [
"return",
"download"
]
}
},
"required": [
"west",
"south",
"east",
"north",
"spacing"
]
}
}find-objects-in-areaAnswer
Finds POIs of the given categories (from list-object-categories) inside a bounding box, wherever it is — unlike show-objects, which is bound to what the map shows and draws what it finds. This one only reports back; it leaves the map alone.
View tool JSON
{
"name": "find-objects-in-area",
"kind": "answer",
"impl": "imperative",
"description": "Finds POIs of the given categories (from list-object-categories) inside a bounding box, wherever it is — unlike show-objects, which is bound to what the map shows and draws what it finds. This one only reports back; it leaves the map alone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"categories": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
},
"west": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"south": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"east": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"north": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"limit": {
"description": "How many objects to return at most; 200 by default.",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"deliver": {
"description": "`download` writes the answer to a JSON file instead of returning it — for a result too big to carry back through the agent's own channel.",
"type": "string",
"enum": [
"return",
"download"
]
}
},
"required": [
"categories",
"west",
"south",
"east",
"north"
]
}
}get-app-stateAnswer
Returns what the app is doing right now: the open tools and dialog, the selected feature, the UI language and who is signed in.
View tool JSON
{
"name": "get-app-state",
"kind": "answer",
"impl": "imperative",
"description": "Returns what the app is doing right now: the open tools and dialog, the selected feature, the UI language and who is signed in.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}
}open-toolAction
Opens one of the app's tools — its toolbar, and whatever it takes over map clicks for.
View tool JSON
{
"name": "open-tool",
"kind": "act",
"impl": "imperative",
"description": "Opens one of the app's tools — its toolbar, and whatever it takes over map clicks for.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"tool": {
"type": "string",
"enum": [
"changesets",
"draw-lines",
"draw-points",
"draw-polygons",
"gps-recorder",
"import-file",
"map-details",
"objects",
"panorama",
"route-planner",
"toposcope",
"tracking"
]
}
},
"required": [
"tool"
]
}
}close-toolAction
Closes one open tool.
View tool JSON
{
"name": "close-tool",
"kind": "act",
"impl": "imperative",
"description": "Closes one open tool.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"tool": {
"type": "string",
"enum": [
"changesets",
"draw-lines",
"draw-points",
"draw-polygons",
"gps-recorder",
"import-file",
"map-details",
"objects",
"panorama",
"route-planner",
"toposcope",
"tracking"
]
}
},
"required": [
"tool"
]
}
}open-dialogAction
Opens one of the app's dialogs, for the user to carry on in themselves — signing in, exporting, buying credits, configuring the map. Call get-app-guide for what each one does.
View tool JSON
{
"name": "open-dialog",
"kind": "act",
"impl": "imperative",
"description": "Opens one of the app's dialogs, for the user to carry on in themselves — signing in, exporting, buying credits, configuring the map. Call get-app-guide for what each one does.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"dialog": {
"type": "string",
"enum": [
"about",
"account",
"browse-cache",
"credits-purchase",
"custom-maps",
"drawing-properties",
"elevation-settings",
"embed",
"file-import",
"gallery-filter",
"gallery-leaderboard",
"gallery-upload",
"gps-recorder-settings",
"legend",
"login",
"map-features-export",
"map-layers-config",
"map-preferences",
"map-to-document-export",
"my-maps",
"objects-style",
"offline-map-export",
"offline-maps",
"panorama-settings",
"premium",
"route-planner-style",
"search-result-style",
"support-us",
"toposcope-settings",
"track-viewer-style",
"track-viewer-match",
"tracking-my",
"tracking-watched",
"viewshed-settings"
]
}
},
"required": [
"dialog"
]
}
}clear-mapAction
Takes everything the user put on the map off it — searched places, the planned route, drawings, imported tracks.
View tool JSON
{
"name": "clear-map",
"kind": "act",
"impl": "imperative",
"description": "Takes everything the user put on the map off it — searched places, the planned route, drawings, imported tracks.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}
}