{"openapi":"3.1.0","info":{"title":"HERE Routing API (your key) API","version":"0.1.0","description":"HERE Routing API (your key) lets an AI assistant read your own HERE Routing data through the HERE Routing API with a key you supply (HERE API key). Read-only: 7 tools (calculate_car_route, calculate_truck_route, calculate_pedestrian_route, calculate_bicycle_route, calculate_scooter_route, get_route_by_handle, get_service_version). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-here-routing.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-here-routing/docs"},"termsOfService":"https://connectorbay.com/byok-here-routing/terms"},"servers":[{"url":"https://byok-here-routing.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-here-routing/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/calculate_car_route":{"post":{"operationId":"calculate_car_route","summary":"Calculate a car route between two coordinates with traffic-aware duration, length and sections; returns the provider's J","description":"Calculate a car route between two coordinates with traffic-aware duration, length and sections; returns the provider's JSON. Use for \"How long does it take to drive from latitude 52.5308, longitude 13.3847 to 52.5219, 13.4132\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"origin":{"description":"Start as 'LAT,LNG', for example '52.5308,13.3847'.","maxLength":100,"title":"Origin","type":"string"},"destination":{"description":"End as 'LAT,LNG', for example '52.5219,13.4132'.","maxLength":100,"title":"Destination","type":"string"},"transport_mode":{"anyOf":[{"const":"car","type":"string"},{"type":"null"}],"default":"car","description":"Always 'car' for this tool.","title":"Transport Mode"},"departure_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Departure time, RFC 3339 such as 2026-10-20T08:00:00 (default now). Used for traffic-aware times.","title":"Departure Time"},"arrival_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Arrival time, RFC 3339 such as 2026-10-20T09:00:00 (use this or departure_time).","title":"Arrival Time"},"routing_mode":{"anyOf":[{"enum":["fast","short"],"type":"string"},{"type":"null"}],"default":"fast","description":"Optimize for fast (shortest time, default) or short (shortest distance).","title":"Routing Mode"},"alternatives":{"anyOf":[{"maximum":6,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Extra alternative routes besides the best one (0 to 6).","title":"Alternatives"},"avoid_features":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated features to avoid: tollRoad, ferry, tunnel, dirtRoad, controlledAccessHighway, carShuttleTrain, seasonalClosure.","title":"Avoid Features"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":null,"description":"Units in guidance: metric or imperial.","title":"Units"},"lang":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"BCP 47 language tag for texts, for example 'en-US' (default en-US).","title":"Lang"},"return_attributes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"summary","description":"Comma-separated extras: summary (length and duration, default), polyline, actions, instructions, travelSummary, typicalDuration, routeHandle, incidents, tolls.","title":"Return Attributes"}},"required":["origin","destination"],"title":"calculate_car_routeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/calculate_truck_route":{"post":{"operationId":"calculate_truck_route","summary":"Calculate a truck route between two coordinates that respects the vehicle size and weight given (gross weight in kg, hei","description":"Calculate a truck route between two coordinates that respects the vehicle size and weight given (gross weight in kg, height, width, length in cm); returns the provider's JSON. Use for \"What truck route fits a 12 tonne, 4 m high truck from 52.5308,13.3847 to 52.5219,13.4132\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"origin":{"description":"Start as 'LAT,LNG', for example '52.5308,13.3847'.","maxLength":100,"title":"Origin","type":"string"},"destination":{"description":"End as 'LAT,LNG', for example '52.5219,13.4132'.","maxLength":100,"title":"Destination","type":"string"},"transport_mode":{"anyOf":[{"const":"truck","type":"string"},{"type":"null"}],"default":"truck","description":"Always 'truck' for this tool.","title":"Transport Mode"},"departure_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Departure time, RFC 3339 such as 2026-10-20T08:00:00 (default now). Used for traffic-aware times.","title":"Departure Time"},"arrival_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Arrival time, RFC 3339 such as 2026-10-20T09:00:00 (use this or departure_time).","title":"Arrival Time"},"routing_mode":{"anyOf":[{"enum":["fast","short"],"type":"string"},{"type":"null"}],"default":"fast","description":"Optimize for fast (shortest time, default) or short (shortest distance).","title":"Routing Mode"},"alternatives":{"anyOf":[{"maximum":6,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Extra alternative routes besides the best one (0 to 6).","title":"Alternatives"},"gross_weight_kg":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Gross vehicle weight in kilograms (0 to 100000).","title":"Gross Weight Kg"},"height_cm":{"anyOf":[{"maximum":5000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Vehicle height in centimeters (0 to 5000).","title":"Height Cm"},"width_cm":{"anyOf":[{"maximum":5000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Vehicle width in centimeters (0 to 5000).","title":"Width Cm"},"length_cm":{"anyOf":[{"maximum":30000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Total vehicle length in centimeters (0 to 30000).","title":"Length Cm"},"avoid_features":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated features to avoid: tollRoad, ferry, tunnel, dirtRoad, controlledAccessHighway, carShuttleTrain, seasonalClosure.","title":"Avoid Features"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":null,"description":"Units in guidance: metric or imperial.","title":"Units"},"lang":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"BCP 47 language tag for texts, for example 'en-US' (default en-US).","title":"Lang"},"return_attributes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"summary","description":"Comma-separated extras: summary (length and duration, default), polyline, actions, instructions, travelSummary, typicalDuration, routeHandle, incidents, tolls.","title":"Return Attributes"}},"required":["origin","destination"],"title":"calculate_truck_routeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/calculate_pedestrian_route":{"post":{"operationId":"calculate_pedestrian_route","summary":"Calculate a walking route between two coordinates with duration and length; returns the provider's JSON. Use for \"How lo","description":"Calculate a walking route between two coordinates with duration and length; returns the provider's JSON. Use for \"How long does it take to walk from 52.5308,13.3847 to 52.5219,13.4132\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"origin":{"description":"Start as 'LAT,LNG', for example '52.5308,13.3847'.","maxLength":100,"title":"Origin","type":"string"},"destination":{"description":"End as 'LAT,LNG', for example '52.5219,13.4132'.","maxLength":100,"title":"Destination","type":"string"},"transport_mode":{"anyOf":[{"const":"pedestrian","type":"string"},{"type":"null"}],"default":"pedestrian","description":"Always 'pedestrian' for this tool.","title":"Transport Mode"},"departure_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Departure time, RFC 3339 such as 2026-10-20T08:00:00 (default now). Used for traffic-aware times.","title":"Departure Time"},"arrival_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Arrival time, RFC 3339 such as 2026-10-20T09:00:00 (use this or departure_time).","title":"Arrival Time"},"routing_mode":{"anyOf":[{"enum":["fast","short"],"type":"string"},{"type":"null"}],"default":"fast","description":"Optimize for fast (shortest time, default) or short (shortest distance).","title":"Routing Mode"},"alternatives":{"anyOf":[{"maximum":6,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Extra alternative routes besides the best one (0 to 6).","title":"Alternatives"},"walking_speed":{"anyOf":[{"maximum":2,"minimum":0.5,"type":"number"},{"type":"null"}],"default":null,"description":"Walking speed in meters per second (0.5 to 2, default 1).","title":"Walking Speed"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":null,"description":"Units in guidance: metric or imperial.","title":"Units"},"lang":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"BCP 47 language tag for texts, for example 'en-US' (default en-US).","title":"Lang"},"return_attributes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"summary","description":"Comma-separated extras: summary (length and duration, default), polyline, actions, instructions, travelSummary, typicalDuration, routeHandle, incidents, tolls.","title":"Return Attributes"}},"required":["origin","destination"],"title":"calculate_pedestrian_routeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/calculate_bicycle_route":{"post":{"operationId":"calculate_bicycle_route","summary":"Calculate a bicycle route between two coordinates with duration and length (beta mode in the provider's docs); returns t","description":"Calculate a bicycle route between two coordinates with duration and length (beta mode in the provider's docs); returns the provider's JSON. Use for \"How long does it take to cycle from 52.5308,13.3847 to 52.5219,13.4132\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"origin":{"description":"Start as 'LAT,LNG', for example '52.5308,13.3847'.","maxLength":100,"title":"Origin","type":"string"},"destination":{"description":"End as 'LAT,LNG', for example '52.5219,13.4132'.","maxLength":100,"title":"Destination","type":"string"},"transport_mode":{"anyOf":[{"const":"bicycle","type":"string"},{"type":"null"}],"default":"bicycle","description":"Always 'bicycle' for this tool.","title":"Transport Mode"},"departure_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Departure time, RFC 3339 such as 2026-10-20T08:00:00 (default now). Used for traffic-aware times.","title":"Departure Time"},"arrival_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Arrival time, RFC 3339 such as 2026-10-20T09:00:00 (use this or departure_time).","title":"Arrival Time"},"routing_mode":{"anyOf":[{"enum":["fast","short"],"type":"string"},{"type":"null"}],"default":"fast","description":"Optimize for fast (shortest time, default) or short (shortest distance).","title":"Routing Mode"},"alternatives":{"anyOf":[{"maximum":6,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Extra alternative routes besides the best one (0 to 6).","title":"Alternatives"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":null,"description":"Units in guidance: metric or imperial.","title":"Units"},"lang":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"BCP 47 language tag for texts, for example 'en-US' (default en-US).","title":"Lang"},"return_attributes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"summary","description":"Comma-separated extras: summary (length and duration, default), polyline, actions, instructions, travelSummary, typicalDuration, routeHandle, incidents, tolls.","title":"Return Attributes"}},"required":["origin","destination"],"title":"calculate_bicycle_routeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/calculate_scooter_route":{"post":{"operationId":"calculate_scooter_route","summary":"Calculate a scooter route between two coordinates with duration and length; returns the provider's JSON. Use for \"Route ","description":"Calculate a scooter route between two coordinates with duration and length; returns the provider's JSON. Use for \"Route a scooter from 52.5308,13.3847 to 52.5219,13.4132\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"origin":{"description":"Start as 'LAT,LNG', for example '52.5308,13.3847'.","maxLength":100,"title":"Origin","type":"string"},"destination":{"description":"End as 'LAT,LNG', for example '52.5219,13.4132'.","maxLength":100,"title":"Destination","type":"string"},"transport_mode":{"anyOf":[{"const":"scooter","type":"string"},{"type":"null"}],"default":"scooter","description":"Always 'scooter' for this tool.","title":"Transport Mode"},"departure_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Departure time, RFC 3339 such as 2026-10-20T08:00:00 (default now). Used for traffic-aware times.","title":"Departure Time"},"arrival_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Arrival time, RFC 3339 such as 2026-10-20T09:00:00 (use this or departure_time).","title":"Arrival Time"},"routing_mode":{"anyOf":[{"enum":["fast","short"],"type":"string"},{"type":"null"}],"default":"fast","description":"Optimize for fast (shortest time, default) or short (shortest distance).","title":"Routing Mode"},"alternatives":{"anyOf":[{"maximum":6,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Extra alternative routes besides the best one (0 to 6).","title":"Alternatives"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":null,"description":"Units in guidance: metric or imperial.","title":"Units"},"lang":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"BCP 47 language tag for texts, for example 'en-US' (default en-US).","title":"Lang"},"return_attributes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"summary","description":"Comma-separated extras: summary (length and duration, default), polyline, actions, instructions, travelSummary, typicalDuration, routeHandle, incidents, tolls.","title":"Return Attributes"}},"required":["origin","destination"],"title":"calculate_scooter_routeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_route_by_handle":{"post":{"operationId":"get_route_by_handle","summary":"Decode a route from a route handle returned earlier (request return=routeHandle); handles can expire, so recalculate whe","description":"Decode a route from a route handle returned earlier (request return=routeHandle); handles can expire, so recalculate when it fails. Use for \"Show the route for handle ABC123 again\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"route_handle":{"description":"Route handle from a previous calculate_*_route answer.","maxLength":4000,"title":"Route Handle","type":"string"},"lang":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"BCP 47 language tag for texts, for example 'en-US' (default en-US).","title":"Lang"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":null,"description":"Units in guidance: metric or imperial.","title":"Units"},"return_attributes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"summary","description":"Comma-separated extras: summary (length and duration, default), polyline, actions, instructions, travelSummary, typicalDuration, routeHandle, incidents, tolls.","title":"Return Attributes"}},"required":["route_handle"],"title":"get_route_by_handleArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_service_version":{"post":{"operationId":"get_service_version","summary":"Show the Routing API version, service version and map data versions in use. Use for \"Which version of the HERE Routing A","description":"Show the Routing API version, service version and map data versions in use. Use for \"Which version of the HERE Routing API and map data is in use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_service_versionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}