Skip to content

Tool reference

All 11 tools, every one read-only (readOnlyHint). Two conventions run through the whole set:

  • Every place input is a string that accepts either a name/address (geocoded automatically via Nominatim) or literal coordinates as "lat,lon""Eiffel Tower", "5 Avenue Anatole France, Paris" and "48.8584,2.2945" are interchangeable.
  • language is accepted by every tool that resolves places: an IETF code like "en" or "de" for the returned place labels, default "en".

Travel profiles are "foot", "car" or "bike" throughout.

Geocoding

geocode

Converts a place name or address into coordinates. Returns matching places with lat/lon, a display label and the OSM id. Provider nominatim (default) is best for addresses; photon is typo-tolerant and better for fuzzy place names.

ParameterTypeRequiredDescription
querystring (1–300)yesPlace name or address
provider"nominatim" | "photon"noGeocoder to use, default nominatim
limitinteger 1–10noMaximum number of results, default 3
languagestringnoLanguage for place names, default "en"
countrycodesstringnoRestrict to countries: comma-separated ISO 3166-1 alpha-2 codes, e.g. "de,lu" (Nominatim only)
json
{ "query": "Luvre, Paris", "provider": "photon" }

…finds the Louvre despite the typo.

reverse_geocode

Converts coordinates into the nearest address or place name (Nominatim).

ParameterTypeRequiredDescription
latitudenumber −90…90yes
longitudenumber −180…180yes
languagestringnoLanguage for the result, default "en"
json
{ "latitude": 49.6116, "longitude": 6.1319 }

Routing

route

Calculates the real-world travel distance and time between two or more places, visited in the given order. Returns a human-readable distance and duration plus raw meters/seconds, per-leg summaries when there are more than two waypoints, and optionally a turn-by-turn summary (capped at the first 100 steps). Uses OSRM, or OpenRouteService when ORS_API_KEY is set.

ParameterTypeRequiredDescription
waypointsstring[] (2–25)yesStart, optional stops in between, destination
profile"foot" | "car" | "bike"yesTravel mode
include_stepsbooleannoInclude a turn-by-turn step summary, default false
languagestringnoLanguage for resolved place labels, default "en"
json
{ "waypoints": ["Eiffel Tower", "Louvre, Paris"], "profile": "foot" }

route_matrix

Computes travel times and distances from every origin to every destination in one call — ideal for comparing options, e.g. 5 hotels against 3 sights. Cells are null where no route exists. Durations come back in minutes, distances in kilometers. Origins + destinations must stay ≤ 25 (public OSRM usage policy).

ParameterTypeRequiredDescription
originsstring[] (1–12)yes
destinationsstring[] (1–12)yes
profile"foot" | "car" | "bike"yesTravel mode
languagestringnoDefault "en"
json
{
  "origins": ["Hotel Le Six, Paris", "Hotel des Arts Montmartre"],
  "destinations": ["Louvre", "Musée d'Orsay", "Sainte-Chapelle"],
  "profile": "foot"
}

optimize_route

Finds the best order to visit a set of stops (traveling-salesman optimization, OSRM /trip) and returns the optimized itinerary with total distance and time plus per-leg summaries. With roundtrip (the default) the tour returns to the first stop; without it the first stop is the start and the last stop the end. Always uses OSRM — ORS has no equivalent service.

ParameterTypeRequiredDescription
stopsstring[] (3–12)yes
profile"foot" | "car" | "bike"yesTravel mode
roundtripbooleannoReturn to the first stop at the end, default true
languagestringnoDefault "en"
json
{
  "stops": ["Colosseum", "Trevi Fountain", "Pantheon, Rome", "Spanish Steps"],
  "profile": "foot",
  "roundtrip": false
}

isochrone

Shows how far you can get from a place within a time or distance budget — "what is reachable in 15 minutes on foot?". Returns a compact summary of the reachable area: bounding box and reach per compass direction. Give exactly one of minutes or kilometers. Uses Valhalla, or OpenRouteService when ORS_API_KEY is set.

ParameterTypeRequiredDescription
centerstringyesPlace name, address or "lat,lon"
profile"foot" | "car" | "bike"yesTravel mode
minutesnumber 1–120one ofTime budget
kilometersnumber 0.1–100one ofDistance budget
languagestringnoDefault "en"
json
{ "center": "Gare du Nord, Paris", "profile": "foot", "minutes": 15 }

Points of interest

find_nearby_pois

Finds points of interest near a location, sorted by distance (Overpass). category is either one of ~45 built-in shortcuts — restaurant, cafe, bar, hotel, hostel, museum, attraction, viewpoint, castle, supermarket, bakery, pharmacy, hospital, atm, fuel, charging_station, parking, toilets, drinking_water, bus_stop, train_station, bicycle_rental, playground, park, beach and more — or any raw OSM tag as key or key=value, e.g. "diet:vegan=yes". Each result carries name, distance, coordinates, the OSM id and the core tags (cuisine, opening hours, website, phone, wheelchair, …).

ParameterTypeRequiredDescription
nearstringyesPlace name, address or "lat,lon"
categorystring (1–100)yesCategory shortcut or OSM tag filter
radius_minteger 50–10 000noSearch radius in meters, default 1 000
limitinteger 1–25noMaximum number of results, default 10
languagestringnoDefault "en"
json
{ "near": "Alexanderplatz, Berlin", "category": "diet:vegan=yes", "radius_m": 800 }

poi_details

Fetches the full OpenStreetMap record of one element — all tags (opening hours, website, phone, …), coordinates and a map link. Takes an OSM id as returned by find_nearby_pois or geocode. Responses are budgeted: at most 60 tags, values truncated at 500 characters.

ParameterTypeRequiredDescription
osm_idstringyes"node/<id>", "way/<id>" or "relation/<id>", e.g. "node/240109189"
json
{ "osm_id": "node/240109189" }

suggest_meeting_point

Suggests a fair place to meet for people starting from different locations: finds venues around the geographic midpoint and picks the one with the most balanced travel times — smallest worst-case time first, total time as the tie-breaker. Returns the suggested venue with per-person travel times and up to three alternatives.

ParameterTypeRequiredDescription
locationsstring[] (2–8)yesStarting points of all participants
profile"foot" | "car" | "bike"noHow everyone travels, default foot
venue_categorystring (1–100)noWhat kind of venue to meet at, default "cafe"
search_radius_minteger 100–10 000noVenue search radius around the midpoint, default 1 500
languagestringnoDefault "en"
json
{ "locations": ["Gare du Nord, Paris", "Bastille, Paris", "Montparnasse"], "venue_category": "bar" }

Offline helpers

straight_line_distance

Great-circle ("as the crow flies") distance between two places. Instant and independent of any road network — use route for real travel distances. Needs the network only to geocode place names; literal coordinates compute fully offline.

ParameterTypeRequiredDescription
fromstringyesPlace name, address or "lat,lon"
tostringyesPlace name, address or "lat,lon"
languagestringnoDefault "en"
json
{ "from": "Berlin", "to": "Tokyo" }

Generates openstreetmap.org links to open in a browser: a marker link for a single place, or a directions link when from and to are given (the directions engine matches the chosen profile). Provide either place, or both from and to.

ParameterTypeRequiredDescription
placestringone formPlace for a marker link
fromstringother formStart for a directions link
tostringother formDestination for a directions link
profile"foot" | "car" | "bike"noTravel mode for the directions link, default foot
languagestringnoDefault "en"
json
{ "from": "Eiffel Tower", "to": "Louvre", "profile": "foot" }

Released under the MIT License.