{"openapi":"3.1.0","info":{"title":"Transit API","version":"0.1.0","description":"London TfL status, arrivals, journeys and cycle hire; NYC subway real-time arrivals and alerts; BART departures and advisories; any GTFS-Realtime feed.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://transit.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/transit/docs"},"termsOfService":"https://connectorbay.com/transit/terms"},"servers":[{"url":"https://transit.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/transit/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/london_status":{"post":{"operationId":"london_status","summary":"Live status of London's Tube, Elizabeth line, Overground, DLR and tram lines with the reason for any delay,","description":"Live status of London's Tube, Elizabeth line, Overground, DLR and tram lines with the reason for any delay,\n    closure or suspension. Use for \"is the Central line running\", \"any tube problems right now\", \"Northern line\n    status\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"line":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"One line to check, e.g. Central, Victoria, Elizabeth line, DLR (default all).","title":"Line"},"problems_only":{"default":false,"description":"Only lines not on Good Service.","title":"Problems Only","type":"boolean"}},"title":"london_statusArguments","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/london_arrivals":{"post":{"operationId":"london_arrivals","summary":"Next arrivals at a London station: line, destination, platform, direction and minutes away (Tube, Elizabeth","description":"Next arrivals at a London station: line, destination, platform, direction and minutes away (Tube, Elizabeth\n    line, Overground, DLR, tram, buses). Use for \"next trains from Oxford Circus\", \"when's the next Victoria line at\n    King's Cross\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"station":{"description":"Station or stop name.","examples":["King's Cross","Oxford Circus","Canary Wharf"],"title":"Station","type":"string"},"line":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only this line, e.g. Victoria.","title":"Line"},"max_results":{"default":12,"maximum":30,"minimum":1,"title":"Max Results","type":"integer"}},"required":["station"],"title":"london_arrivalsArguments","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/london_journey":{"post":{"operationId":"london_journey","summary":"Plan a journey across London with TfL's journey planner: up to four options with legs (mode, line, from/to,","description":"Plan a journey across London with TfL's journey planner: up to four options with legs (mode, line, from/to,\n    times), total minutes, changes and the adult pay-as-you-go fare where TfL provides it. Use for \"how do I get from\n    Paddington to Canary Wharf\", \"fastest way to Heathrow from King's Cross at 7am tomorrow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_place":{"description":"Start: station, postcode, address or 'lat,lon'.","examples":["Paddington","SW1A 1AA"],"title":"From Place","type":"string"},"to_place":{"description":"Destination.","examples":["Canary Wharf","Heathrow Terminal 5"],"title":"To Place","type":"string"},"depart_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Departure time YYYY-MM-DDTHH:MM local (default now).","title":"Depart At"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Restrict modes: tube, bus, national-rail, dlr, overground, elizabeth-line, walking, cycle (comma-separated).","title":"Mode"}},"required":["from_place","to_place"],"title":"london_journeyArguments","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/london_bikes":{"post":{"operationId":"london_bikes","summary":"Santander Cycles docking stations near a place: bikes, e-bikes and empty docks right now. Use for \"any bikes","description":"Santander Cycles docking stations near a place: bikes, e-bikes and empty docks right now. Use for \"any bikes\n    near Waterloo\", \"where can I dock a bike at Hyde Park Corner\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"near":{"description":"Place or station name.","examples":["Waterloo","Hyde Park Corner"],"title":"Near","type":"string"},"max_results":{"default":6,"maximum":15,"minimum":1,"title":"Max Results","type":"integer"}},"required":["near"],"title":"london_bikesArguments","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/nyc_subway_arrivals":{"post":{"operationId":"nyc_subway_arrivals","summary":"Next New York City subway trains at a station from MTA's real-time feeds: line, direction (uptown/downtown),","description":"Next New York City subway trains at a station from MTA's real-time feeds: line, direction (uptown/downtown),\n    destination and minutes away. Use for \"next 6 train at Union Square\", \"when is the next L at Bedford Av\",\n    \"trains at Grand Central\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"station":{"description":"Subway station name.","examples":["Union Sq","Times Sq-42 St","Grand Central"],"title":"Station","type":"string"},"line":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"One line, e.g. 6, L, A, Q.","title":"Line"},"max_results":{"default":10,"maximum":30,"minimum":1,"title":"Max Results","type":"integer"}},"required":["station"],"title":"nyc_subway_arrivalsArguments","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/nyc_subway_alerts":{"post":{"operationId":"nyc_subway_alerts","summary":"Current NYC subway service alerts — delays, service changes, suspensions, planned work — by line. Use for \"L","description":"Current NYC subway service alerts — delays, service changes, suspensions, planned work — by line. Use for \"L\n    train alerts\", \"any subway delays right now\", \"weekend service changes on the A\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"line":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"One line, e.g. L, 7, A (default all).","title":"Line"},"max_results":{"default":15,"maximum":40,"minimum":1,"title":"Max Results","type":"integer"}},"title":"nyc_subway_alertsArguments","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/bart_departures":{"post":{"operationId":"bart_departures","summary":"Real-time BART departures at a station: destination, minutes, platform, direction, train length, colour line","description":"Real-time BART departures at a station: destination, minutes, platform, direction, train length, colour line\n    and delay. Use for \"next BART from Embarcadero\", \"trains to SFO from Downtown Berkeley\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"station":{"description":"BART station name or code.","examples":["Embarcadero","Berkeley","SFO"],"title":"Station","type":"string"},"max_results":{"default":12,"maximum":30,"minimum":1,"title":"Max Results","type":"integer"}},"required":["station"],"title":"bart_departuresArguments","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/bart_advisories":{"post":{"operationId":"bart_advisories","summary":"BART system-wide service advisories (delays, elevator outages, disruptions). Use for \"any BART delays\",","description":"BART system-wide service advisories (delays, elevator outages, disruptions). Use for \"any BART delays\",\n    \"is BART running normally\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"bart_advisoriesArguments","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/gtfs_realtime":{"post":{"operationId":"gtfs_realtime","summary":"Summarise any public GTFS-Realtime feed: entity counts, upcoming stop times (with a stop id), vehicle","description":"Summarise any public GTFS-Realtime feed: entity counts, upcoming stop times (with a stop id), vehicle\n    positions and alerts, optionally filtered by route. Use for agencies not covered natively when you know their\n    feed URL (many publish keyless feeds).","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"url":{"description":"Public GTFS-Realtime feed URL (protobuf).","examples":["https://api-endpoint.mta.info/Dataservice/mtagtfsfeeds/nyct%2Fgtfs-l"],"title":"Url","type":"string"},"stop_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter trip updates to this GTFS stop id.","title":"Stop Id"},"route_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter to this GTFS route id.","title":"Route Id"},"max_results":{"default":20,"maximum":50,"minimum":1,"title":"Max Results","type":"integer"}},"required":["url"],"title":"gtfs_realtimeArguments","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/coverage":{"post":{"operationId":"coverage","summary":"Which cities and agencies Transit covers natively, what each supports, and how to use other agencies via a","description":"Which cities and agencies Transit covers natively, what each supports, and how to use other agencies via a\n    GTFS-Realtime feed URL.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"coverageArguments","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}}}}