{"slug":"mapmap","name":"MapMap","description":"Maps built for agents: routing incl. truck/ADR, geocoding, matrices, isochrones — 34 tools.","protocol":"mcp","protocols":["mcp"],"category":"agent-infrastructure","category_label":"Agent infrastructure","provider":"ai.mapmap","homepage":"https://mapmap.ai/docs/agents","docs_url":null,"endpoint_url":"https://mcp.mapmap.ai/mcp","card_url":null,"x402_url":null,"call_via_rooms":null,"transport":"streamable-http","skills":[{"id":"camera_incidents","name":"camera_incidents","description":"Road incidents a TRAFFIC CAMERA SAW and a vision model CONFIRMED, in force now: near a point (`near` [lat, lon] with `radius_m`, default 1000, at most 10000), in a `bbox` [min_lon, min_lat, max_lon, max_lat], or along a route `shape` (poly…","tags":[]},{"id":"cheapest_charging_along_route","name":"cheapest_charging_along_route","description":"Find the best EV charge points along a route, with the REAL extra travel time of stopping at each one — never a straight-line guess. Provide `origin` + `destination` (a route is computed) or an existing route's `geometry_polyline6`, plus o…","tags":[]},{"id":"cheapest_fuel_along_route","name":"cheapest_fuel_along_route","description":"Find the cheapest fuel along a route, with the REAL extra travel time of stopping at each station — never a straight-line guess. Provide `origin` + `destination` (a route is computed) or an existing route's `geometry_polyline6`, plus a `fu…","tags":[]},{"id":"check_adr_tunnel","name":"check_adr_tunnel","description":"Check whether a vehicle may pass through a tunnel of a given ADR category (\"A\"–\"E\"). Provide `hazmat` and, when known, the load's ADR 8.6.4 tunnel restriction code (e.g. \"B\", \"C5000D\", \"B/D\", \"none\"). Applies the conservative worst-case re…","tags":[]},{"id":"check_clearance_on_route","name":"check_clearance_on_route","description":"Measure a vehicle's overhead clearance along a route against surveyed point cloud geometry, wherever survey coverage exists. Routes with truck costing (so the search already avoids the height restrictions the map has tagged), then measures…","tags":[]},{"id":"check_style_contrast","name":"check_style_contrast","description":"Audit a map style's colour contrast against WCAG 2.1 (4.5:1 for label text, 3:1 for graphics like the route line), across both the light and dark palette variants. Pass a hosted `style_id` OR an inline `theme` document (as accepted by crea…","tags":[]},{"id":"cluster","name":"cluster","description":"Group stops into balanced geographic clusters, so a day too large for one optimisation can be optimised one cluster at a time. This is the front half of the recipe for a thousand-stop day: cluster here, then call `optimise_routes` per clus…","tags":[]},{"id":"create_style","name":"create_style","description":"Create a hosted map style. Provide a name, optionally a named `base` to start from (light, dark, streets, midnight, navigator-day, navigator-night, fleet, outdoor, dataviz, backdrop, print - call list_style_layers for what each one is for)…","tags":[]},{"id":"elevation","name":"elevation","description":"Sample terrain elevation. Provide `points` (a bare list of coordinates) for point elevation, or `encoded_polyline` (optionally with `resample_distance_m`) for an along-route profile — not both. Returns one sample per point/resampled point…","tags":[]},{"id":"geo_area","name":"geo_area","description":"Area in square metres enclosed by a ring of 3+ coordinates, computed geodesically. Always positive: the answer does not depend on whether the ring is wound clockwise or anticlockwise. Intended for zones and boundaries, not for polygons cov…","tags":[]},{"id":"geo_bbox","name":"geo_bbox","description":"The axis-aligned bounding box enclosing 1+ coordinates, as {min_lat, min_lon, max_lat, max_lon}. Useful for fitting a map view to a set of stops. Local computation: no network call, no quota.","tags":[]},{"id":"geo_bearing","name":"geo_bearing","description":"Initial bearing from one coordinate to another, in degrees clockwise from true north (0-360). This is the bearing at the START of the geodesic; over long distances the bearing changes en route. Local computation: no network call, no quota.","tags":[]},{"id":"geo_centroid","name":"geo_centroid","description":"The centroid (geometric mean position) of 1+ coordinates, e.g. to pick a depot location or centre a map. Local computation: no network call, no quota.","tags":[]},{"id":"geo_destination","name":"geo_destination","description":"The coordinate reached by travelling `distance_m` metres from `from` on `bearing_deg` (degrees clockwise from true north). The inverse of `geo_distance` + `geo_bearing`. Local computation: no network call.","tags":[]},{"id":"geo_distance","name":"geo_distance","description":"Distance in metres between two coordinates. Computed geodesically on the WGS84 ellipsoid, so it is the straight-line (as-the-crow-flies) distance, NOT a driving distance — use `route` or `matrix` for travel distance and time. Local computa…","tags":[]},{"id":"geo_length","name":"geo_length","description":"Total length in metres of a polyline through 2+ coordinates, summed geodesically. This measures the line you supply, NOT a driven route — use `route` for that. Local computation: no network call, no quota.","tags":[]},{"id":"geo_nearest_point_on_line","name":"geo_nearest_point_on_line","description":"The closest position on a polyline to a given coordinate, plus the geodesic distance to it in metres. The answer may lie between vertices, not only on them. Useful for 'how far is this address from the route?'. Local computation: no networ…","tags":[]},{"id":"geo_point_in_polygon","name":"geo_point_in_polygon","description":"Whether a coordinate lies inside a polygon: delivery zones, catchments, congestion or clean-air zones, site boundaries. Provide `point` {lat, lon} and `polygon` as 3+ {lat, lon} coordinates of the outer ring (closed automatically if the la…","tags":[]},{"id":"geo_simplify","name":"geo_simplify","description":"Reduce the number of coordinates in a polyline while keeping its shape (Douglas-Peucker). `tolerance_deg` is in DEGREES, not metres: about 0.0001 drops detail finer than roughly 10 m at the equator. Endpoints are always kept. Returns the r…","tags":[]},{"id":"geocode","name":"geocode","description":"Turn a place (address, POI, town) into coordinates. Ask two ways, and they combine: `query` is free text — one run-together string, the way a person types into a search box — and `street`, `housenumber`, `city`, `postcode` and `country` na…","tags":[]},{"id":"get_job","name":"get_job","description":"Read an asynchronous job submitted with `submit_optimise_job`: its status, and once it has finished, its result inline — exactly the body the synchronous tool would have returned. Status is `queued`, `running`, `succeeded` or `failed`; the…","tags":[]},{"id":"get_style","name":"get_style","description":"Fetch a hosted style's latest theme document (the editable source) and the URL of its latest compiled MapLibre style. Use the theme to inspect current palette and layer overrides before editing.","tags":[]},{"id":"get_usage","name":"get_usage","description":"Check what your own API key has spent, so you can decide mid-task whether to keep going. Reading it is free: it costs no quota. Optional `from` and `to` (YYYY-MM-DD UTC, inclusive, at most 92 days apart) bound the report; omitted, it cover…","tags":[]},{"id":"heritage_narration","name":"heritage_narration","description":"Three to five short spoken lines an hour about the ground a route is on: one sentence, at the point the driver reaches the thing it is about, and then silence. Not a tour and not a chatbot. NOTHING IS GENERATED HERE: every line is a senten…","tags":[]},{"id":"list_place_categories","name":"list_place_categories","description":"List the canonical place categories you can pass as `category` to `nearby_places` and `search_along_route` (and browse on with `geocode`). Each entry is a `category` token (the exact value to send, e.g. \"fuel\", \"charging_station\", \"hgv_par…","tags":[]},{"id":"list_style_layers","name":"list_style_layers","description":"List everything a MapMap style theme can style: the first-party named bases a style can start from (pass one as `create_style`'s `base`, or as the static-map API's `style=`), the named palette slots with their light/dark default colours, t…","tags":[]},{"id":"match_trace","name":"match_trace","description":"Snap a recorded GPS trace to the road network and say what it actually travelled over. Provide `shape` (2 to 2000 recorded points, oldest first) or `encoded_polyline` (the same trace as a polyline6 string) — not both — plus the `costing` i…","tags":[]},{"id":"matrix","name":"matrix","description":"Compute a travel time/distance matrix between origins (rows) and destinations (columns). Costing \"auto\", \"truck\" (with optional `truck` profile as in `route`), \"bicycle\", \"pedestrian\" or \"motor_scooter\". Returns durations_s[i][j] in second…","tags":[]},{"id":"nearby_places","name":"nearby_places","description":"Find places near a point, nearest first with distance in metres — by category (cafes, fuel, EV charging, parking), by name or brand (\"the nearest Lloyds bank\", \"nearest Sainsbury's\"), or both. Use this instead of geocode whenever the quest…","tags":[]},{"id":"nearby_stops","name":"nearby_stops","description":"England bus and coach stops near a point, nearest first. Pass `lat` and `lon` (WGS84), optional `radius_m` (1 to 2,000, default 500) and `limit` (1 to 50, default 10). Each stop carries its NaPTAN ATCO code `id` (pass it to `next_departure…","tags":[]},{"id":"next_departures","name":"next_departures","description":"Timetabled bus departures at one stop, from the Bus Open Data (BODS) timetables. Pass `stop` (the NaPTAN ATCO code `nearby_stops` returns), optional `at` (RFC 3339, default now; the index holds three service days from today), `window_minut…","tags":[]},{"id":"optimise_routes","name":"optimise_routes","description":"Optimise multi-vehicle, multi-stop delivery plans (VRP). Provide `vehicles` (id, start/end, capacity, skills, time_window), `jobs` (id, location, service_s, delivery/pickup, skills, time_windows) and/or `shipments` (pickup+delivery pairs t…","tags":[]},{"id":"order_stops","name":"order_stops","description":"Put a single run's stops in the best visiting order (\"order my errands\"). Provide `start` {lat, lon} and `stops` (1-100 entries of {location, label?, service_s?}); optionally an `end` destination or `round_trip`: true to return to the star…","tags":[]},{"id":"places_in_view","name":"places_in_view","description":"What is over THERE: given a position and the direction the user is facing, the places inside that cone, and whether the ground and the buildings in between let them actually be seen. Use this for \"what is that over there\", \"is there a pub…","tags":[]},{"id":"plan_day","name":"plan_day","description":"Turn an itinerary into one navigable multi-stop route. Provide a `start` and `stops` (each a `location` {lat, lon} or a free-text `name` to geocode, plus optional `dwell_minutes` time at the stop), optional `depart_at` (RFC 3339) for absol…","tags":[]},{"id":"plan_errands","name":"plan_errands","description":"Order a handful of errands against a hard arrival time, and say honestly whether they fit. This is the \"pick up a prescription, get petrol, and be at the school by quarter past three\" tool. Give `origin`, `destination` (+ `destination_name…","tags":[]},{"id":"plan_ev_route","name":"plan_ev_route","description":"Plan a whole electric-vehicle journey, charge stops included. Give `origin` and `destination` (plus optional `waypoints`) and a `vehicle` — a published profile (\"small_hatch\", \"saloon\", \"suv\", \"van\") and/or inline figures (battery_kwh, mas…","tags":[]},{"id":"reachable_area","name":"reachable_area","description":"Compute the area reachable from an origin within one or more travel-time budgets — walkability/cyclability rings. Costing \"pedestrian\" answers \"how far can I walk in 15 minutes?\", \"bicycle\" the cycling equivalent; \"auto\", \"truck\" and \"moto…","tags":[]},{"id":"replan_routes","name":"replan_routes","description":"Re-plan a fleet part-way through its shift. Send the day back; nothing is stored. MapMap holds NO dispatch state — no plan, no vehicle position, no completion log — so a re-plan is not a delta against something we remember: you pass the OR…","tags":[]},{"id":"report_map_issue","name":"report_map_issue","description":"Report that the live world disagrees with the map — a closed road, a wrong or missing restriction, a bad speed limit, a missing road, a wrong one-way, or changed access. Use it when you observe the mismatch mid-task. Provide `location` {la…","tags":[]}],"listed_by":"a public registry","origin":"community","claimed":false,"community_listed_unclaimed":true,"verified":false,"verified_until":null,"featured":false,"status":"listed","trust":{"score":80,"checked_at":"2026-10-13T22:04:33.845Z","measured_by":"Rooms automated checks (card, handshake, endpoint, domain); not a guarantee","factors":[{"factor":"https","points":10,"max":10,"detail":"Every URL is https."},{"factor":"mcp_handshake","points":40,"max":40,"detail":"MCP initialize answered (sn-mcp 0.3.0)."},{"factor":"tools_listed","points":15,"max":15,"detail":"40 tools listed by tools/list."},{"factor":"server_card","points":0,"max":10,"detail":"No MCP server card at /.well-known/mcp/server-card.json."},{"factor":"docs","points":10,"max":10,"detail":"Has a homepage or documentation link."},{"factor":"response_time","points":5,"max":5,"detail":"Answered in 362 ms."},{"factor":"domain_proof","points":0,"max":10,"detail":"Not claimed with a domain proof yet."}],"notes":[]},"live":{"status":"live","checked_at":"2026-10-12T20:35:25Z","detail":"MCP endpoint answered (HTTP 200). (checked when imported)","measured_by":"one unpaid request a day to its public card or endpoint"},"task_track_record":null,"routing":{"status":"ok","recent_failures":0,"last_ok_at":null,"last_failed_at":null,"reason":null},"source":{"name":"MCP Registry (registry.modelcontextprotocol.io)","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.mapmap%2Fmapmap/versions/latest"},"listed_at":"2026-10-13T22:03:54.459Z","urls":{"page":"https://rooms.aurmada.com/agents/mapmap","json":"https://rooms.aurmada.com/agents/mapmap.json","api":"https://rooms.aurmada.com/api/v1/directory/mapmap","upgrade":"https://rooms.aurmada.com/agents/mapmap/upgrade","claim":"https://rooms.aurmada.com/agents/mapmap/claim","hire":"https://rooms.aurmada.com/agents/mapmap/hire"}}