{"openapi":"3.1.0","info":{"title":"HERE Public Transit API (your key) API","version":"0.1.0","description":"HERE Public Transit API (your key) lets an AI assistant read your own HERE Transit data through the HERE Transit API with a key you supply (HERE API key). Read-only: 6 tools (plan_transit_route, list_next_departures_by_station, list_next_departures_nearby, search_transit_stations, list_stations_by_id, get_service_version). The BYOK key travels with each request, is used for that one call only and...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-here-transit.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-here-transit/docs"},"termsOfService":"https://connectorbay.com/byok-here-transit/terms"},"servers":[{"url":"https://byok-here-transit.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-here-transit/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/plan_transit_route":{"post":{"operationId":"plan_transit_route","summary":"Plan public transit routes between two coordinates, by departure or arrival time, with sections (walk, transit lines, tr","description":"Plan public transit routes between two coordinates, by departure or arrival time, with sections (walk, transit lines, transfers), times and optional alternatives; returns the provider's JSON. Use for \"How do I get from Berlin Hauptbahnhof to Alexanderplatz by public transit tomorrow morning\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"origin":{"description":"Trip start as 'LAT,LNG', for example '52.5251,13.3694'.","maxLength":100,"title":"Origin","type":"string"},"destination":{"description":"Trip end as 'LAT,LNG', for example '52.5219,13.4132'.","maxLength":100,"title":"Destination","type":"string"},"departure_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Departure time, RFC 3339 such as 2026-10-20T08:00:00 (use this or arrival_time; default now).","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"},"alternatives":{"anyOf":[{"maximum":5,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Extra alternative routes besides the best one (0 to 5).","title":"Alternatives"},"changes":{"anyOf":[{"maximum":6,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of transfers allowed (0 to 6); unlimited when not set.","title":"Changes"},"modes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated transit modes to include, for example 'subway,bus' (or exclude with a minus, '-bus'): highSpeedTrain, intercityTrain, interRegionalTrain, regionalTrain, cityTrain, bus, ferry, subway, lightRail, privateBus, inclined, aerial, busRapid, monorail, flight.","title":"Modes"},"accessibility":{"anyOf":[{"const":"wheelchair","type":"string"},{"type":"null"}],"default":null,"description":"Set to 'wheelchair' to keep only wheelchair accessible vehicles and stations.","title":"Accessibility"},"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 names and texts, for example 'en-US' (default en-US).","title":"Lang"}},"required":["origin","destination"],"title":"plan_transit_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/list_next_departures_by_station":{"post":{"operationId":"list_next_departures_by_station","summary":"List the next departures of one or more stations by station id (from search_transit_stations): line, direction, mode and","description":"List the next departures of one or more stations by station id (from search_transit_stations): line, direction, mode and scheduled and real-time times; returns the provider's JSON. Use for \"What are the next departures from station 110543003\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ids":{"description":"Comma-separated station ids, at most 50, for example '110543003'.","maxLength":1000,"title":"Ids","type":"string"},"time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Earliest departure time, RFC 3339 such as 2026-10-20T08:00:00 (default now).","title":"Time"},"max_per_board":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Maximum departures per station (1 to 50, default 5).","title":"Max Per Board"},"max_per_transport":{"anyOf":[{"maximum":10,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum departures per line and direction (1 to 10).","title":"Max Per Transport"},"timespan":{"anyOf":[{"maximum":1440,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Limit to this many minutes after the time (1 to 1440).","title":"Timespan"},"modes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated transit modes to include, for example 'subway,bus' (or exclude with a minus, '-bus'): highSpeedTrain, intercityTrain, interRegionalTrain, regionalTrain, cityTrain, bus, ferry, subway, lightRail, privateBus, inclined, aerial, busRapid, monorail, flight.","title":"Modes"},"accessibility":{"anyOf":[{"const":"wheelchair","type":"string"},{"type":"null"}],"default":null,"description":"Set to 'wheelchair' to keep only wheelchair accessible vehicles and stations.","title":"Accessibility"},"lang":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"BCP 47 language tag for names and texts, for example 'en-US' (default en-US).","title":"Lang"}},"required":["ids"],"title":"list_next_departures_by_stationArguments","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/list_next_departures_nearby":{"post":{"operationId":"list_next_departures_nearby","summary":"List the next departures of the stations around a point, with line, direction, mode and times; returns the provider's JS","description":"List the next departures of the stations around a point, with line, direction, mode and times; returns the provider's JSON. Use for \"What public transit departs near latitude 52.5308, longitude 13.3847 in the next minutes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"in_circle":{"description":"Search center and optional radius as 'LAT,LNG' or 'LAT,LNG;r=METERS' (default radius 500 m), for example '52.5308,13.3847;r=500'.","maxLength":60,"title":"In Circle","type":"string"},"max_places":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Maximum number of stations to include (1 to 50, default 5).","title":"Max Places"},"time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Earliest departure time, RFC 3339 such as 2026-10-20T08:00:00 (default now).","title":"Time"},"max_per_board":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Maximum departures per station (1 to 50, default 5).","title":"Max Per Board"},"modes":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated transit modes to include, for example 'subway,bus' (or exclude with a minus, '-bus'): highSpeedTrain, intercityTrain, interRegionalTrain, regionalTrain, cityTrain, bus, ferry, subway, lightRail, privateBus, inclined, aerial, busRapid, monorail, flight.","title":"Modes"},"accessibility":{"anyOf":[{"const":"wheelchair","type":"string"},{"type":"null"}],"default":null,"description":"Set to 'wheelchair' to keep only wheelchair accessible vehicles and stations.","title":"Accessibility"},"lang":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"BCP 47 language tag for names and texts, for example 'en-US' (default en-US).","title":"Lang"}},"required":["in_circle"],"title":"list_next_departures_nearbyArguments","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/search_transit_stations":{"post":{"operationId":"search_transit_stations","summary":"Search public transit stations and stops by name, optionally near a point, or by coordinates only; returns id, name, typ","description":"Search public transit stations and stops by name, optionally near a point, or by coordinates only; returns id, name, type and position. Use for \"Find the station named Hauptbahnhof in Berlin\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"in_circle":{"description":"Search center and optional radius as 'LAT,LNG' or 'LAT,LNG;r=METERS' (default radius 500 m), for example '52.5308,13.3847;r=500'.","maxLength":60,"title":"In Circle","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Station name or part of it, for example 'Hauptbahnhof'.","title":"Name"},"method":{"anyOf":[{"enum":["fuzzy","strict"],"type":"string"},{"type":"null"}],"default":null,"description":"Name matching: fuzzy (default) or strict.","title":"Method"},"max_places":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Maximum stations (1 to 25 with a name, 50 without).","title":"Max Places"},"modes_in_place":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Keep stations that have one of these modes, comma-separated, for example 'subway,bus'.","title":"Modes In Place"},"accessibility":{"anyOf":[{"const":"wheelchair","type":"string"},{"type":"null"}],"default":null,"description":"Set to 'wheelchair' to keep only wheelchair accessible vehicles and stations.","title":"Accessibility"}},"required":["in_circle"],"title":"search_transit_stationsArguments","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/list_stations_by_id":{"post":{"operationId":"list_stations_by_id","summary":"Get stations by id with their position and the transit lines (transports) that serve them. Use for \"Which lines serve st","description":"Get stations by id with their position and the transit lines (transports) that serve them. Use for \"Which lines serve station 110543003\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ids":{"description":"Comma-separated station ids, at most 50, for example '110543003'.","maxLength":1000,"title":"Ids","type":"string"},"return_attributes":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"transport","description":"Extra detail: 'transport' lists the serving lines, 'accessPoints' lists entrances, or both comma-separated.","title":"Return Attributes"}},"required":["ids"],"title":"list_stations_by_idArguments","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 Public Transit API version and service version, to confirm that the key can reach the service. Use for \"Which v","description":"Show the Public Transit API version and service version, to confirm that the key can reach the service. Use for \"Which version of the HERE Public Transit API is running\".","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}}}}