{"openapi":"3.1.0","info":{"title":"SNCF Network Data (BYOK) API","version":"0.1.0","description":"SNCF Network Data (BYOK) lets an AI assistant read your own SNCF Network Data data through the SNCF Network Data API with a key you supply (SNCF API token). Read-only: 11 tools (list_networks, list_routes, list_stop_areas, list_stop_points, list_vehicle_journeys, list_physical_modes, list_commercial_modes, list_companies, list_disruptions, list_datasets, list_contributors). The BYOK key travels...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sncf-network-data.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sncf-network-data/docs"},"termsOfService":"https://connectorbay.com/byok-sncf-network-data/terms"},"servers":[{"url":"https://byok-sncf-network-data.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sncf-network-data/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/list_networks":{"post":{"operationId":"list_networks","summary":"List the transport networks (rail networks such as TER regions) of the SNCF coverage with id and name. Use for \"Which tr","description":"List the transport networks (rail networks such as TER regions) of the SNCF coverage with id and name. Use for \"Which transport networks exist in the SNCF coverage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter such as line.code=4, line.id=\"line:RAT:M1\", network.id=\"network:lila\", physical_mode.id=\"physical_mode:Metro\" or stop_area.has_code(source,CAMPO); an unknown match returns an error. Example: network.id=\"network:lila\".","title":"Filter"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_networksArguments","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_routes":{"post":{"operationId":"list_routes","summary":"List the routes (a line in one direction) of the SNCF coverage, optionally filtered by line, network or mode, with direc","description":"List the routes (a line in one direction) of the SNCF coverage, optionally filtered by line, network or mode, with direction and line details. Use for \"Which routes does metro line 4 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter such as line.code=4, line.id=\"line:RAT:M1\", network.id=\"network:lila\", physical_mode.id=\"physical_mode:Metro\" or stop_area.has_code(source,CAMPO); an unknown match returns an error. Example: line.code=4.","title":"Filter"},"depth":{"anyOf":[{"maximum":3,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"Level of detail of nested objects, 0 (smallest) to 3 (largest).","title":"Depth"},"disable_geojson":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves the geographic shapes out of the answer, which makes it much smaller.","title":"Disable Geojson"},"disable_disruption":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves disruptions out of the answer.","title":"Disable Disruption"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_routesArguments","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_stop_areas":{"post":{"operationId":"list_stop_areas","summary":"List the stop areas (stations: groups of stop points) of the SNCF coverage with name, label, coordinates and time zone. ","description":"List the stop areas (stations: groups of stop points) of the SNCF coverage with name, label, coordinates and time zone. Use for \"Which stations are served by line 4\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter such as line.code=4, line.id=\"line:RAT:M1\", network.id=\"network:lila\", physical_mode.id=\"physical_mode:Metro\" or stop_area.has_code(source,CAMPO); an unknown match returns an error. Example: line.code=4.","title":"Filter"},"depth":{"anyOf":[{"maximum":3,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"Level of detail of nested objects, 0 (smallest) to 3 (largest).","title":"Depth"},"disable_geojson":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves the geographic shapes out of the answer, which makes it much smaller.","title":"Disable Geojson"},"disable_disruption":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves disruptions out of the answer.","title":"Disable Disruption"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_stop_areasArguments","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_stop_points":{"post":{"operationId":"list_stop_points","summary":"List the stop points (individual platforms or stops) of the SNCF coverage with name, coordinates, equipments (wheelchair","description":"List the stop points (individual platforms or stops) of the SNCF coverage with name, coordinates, equipments (wheelchair access, lifts) and parent stop area. Use for \"Which stop points does the Chatelet station have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter such as line.code=4, line.id=\"line:RAT:M1\", network.id=\"network:lila\", physical_mode.id=\"physical_mode:Metro\" or stop_area.has_code(source,CAMPO); an unknown match returns an error. Example: stop_area.id=\"stop_area:RAT:SA:CHATE\".","title":"Filter"},"depth":{"anyOf":[{"maximum":3,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"Level of detail of nested objects, 0 (smallest) to 3 (largest).","title":"Depth"},"disable_geojson":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves the geographic shapes out of the answer, which makes it much smaller.","title":"Disable Geojson"},"disable_disruption":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves disruptions out of the answer.","title":"Disable Disruption"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_stop_pointsArguments","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_vehicle_journeys":{"post":{"operationId":"list_vehicle_journeys","summary":"List the vehicle journeys (trips) of the SNCF coverage active in a period, optionally for one headsign, with trip name a","description":"List the vehicle journeys (trips) of the SNCF coverage active in a period, optionally for one headsign, with trip name and headsign. Use for \"Which trips run on a given line between 8:00 and 8:10\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter such as line.code=4, line.id=\"line:RAT:M1\", network.id=\"network:lila\", physical_mode.id=\"physical_mode:Metro\" or stop_area.has_code(source,CAMPO); an unknown match returns an error. Example: line.code=4.","title":"Filter"},"since":{"anyOf":[{"maxLength":15,"type":"string"},{"type":"null"}],"default":null,"description":"Only trips starting after this time, ISO 8601 basic format such as 20261020T080000.","title":"Since"},"until":{"anyOf":[{"maxLength":15,"type":"string"},{"type":"null"}],"default":null,"description":"Only trips starting before this time, ISO 8601 basic format such as 20261020T081000.","title":"Until"},"headsign":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only trips with this headsign.","title":"Headsign"},"data_freshness":{"anyOf":[{"enum":["base_schedule","realtime"],"type":"string"},{"type":"null"}],"default":null,"description":"base_schedule (default) or realtime to take live updates into account.","title":"Data Freshness"},"depth":{"anyOf":[{"maximum":3,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"Level of detail of nested objects, 0 (smallest) to 3 (largest).","title":"Depth"},"disable_geojson":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves the geographic shapes out of the answer, which makes it much smaller.","title":"Disable Geojson"},"disable_disruption":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves disruptions out of the answer.","title":"Disable Disruption"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_vehicle_journeysArguments","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_physical_modes":{"post":{"operationId":"list_physical_modes","summary":"List the physical transport modes of the SNCF coverage (bus, metro, tramway, train, ferry) with id and name. Use for \"Wh","description":"List the physical transport modes of the SNCF coverage (bus, metro, tramway, train, ferry) with id and name. Use for \"Which transport modes are available in the SNCF network\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_physical_modesArguments","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_commercial_modes":{"post":{"operationId":"list_commercial_modes","summary":"List the commercial modes of the SNCF coverage (the public names of services such as RER, Metro, Tram) with id and name.","description":"List the commercial modes of the SNCF coverage (the public names of services such as RER, Metro, Tram) with id and name. Use for \"Which commercial modes exist in the SNCF network\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_commercial_modesArguments","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_companies":{"post":{"operationId":"list_companies","summary":"List the transport companies (operators) of the SNCF coverage with id and name. Use for \"Which companies operate transpo","description":"List the transport companies (operators) of the SNCF coverage with id and name. Use for \"Which companies operate transport in the SNCF network\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter such as line.code=4, line.id=\"line:RAT:M1\", network.id=\"network:lila\", physical_mode.id=\"physical_mode:Metro\" or stop_area.has_code(source,CAMPO); an unknown match returns an error. Example: network.id=\"network:RATP\".","title":"Filter"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_companiesArguments","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_disruptions":{"post":{"operationId":"list_disruptions","summary":"List the disruptions of the SNCF coverage (strikes, works, incidents) with status, severity, cause, messages and applica","description":"List the disruptions of the SNCF coverage (strikes, works, incidents) with status, severity, cause, messages and application periods, optionally for a period. Use for \"Which disruptions are active in the SNCF network today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"anyOf":[{"maxLength":15,"type":"string"},{"type":"null"}],"default":null,"description":"Only disruptions applying after this time, ISO 8601 basic format such as 20261020T000000.","title":"Since"},"until":{"anyOf":[{"maxLength":15,"type":"string"},{"type":"null"}],"default":null,"description":"Only disruptions applying before this time, ISO 8601 basic format such as 20261020T235959.","title":"Until"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter such as line.code=4, line.id=\"line:RAT:M1\", network.id=\"network:lila\", physical_mode.id=\"physical_mode:Metro\" or stop_area.has_code(source,CAMPO); an unknown match returns an error. Example: line.code=4.","title":"Filter"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_disruptionsArguments","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_datasets":{"post":{"operationId":"list_datasets","summary":"List the data sets that form the SNCF coverage (timetable files from transport authorities) with validity period and con","description":"List the data sets that form the SNCF coverage (timetable files from transport authorities) with validity period and contributor. Use for \"Which data sets feed the SNCF coverage coverage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_datasetsArguments","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_contributors":{"post":{"operationId":"list_contributors","summary":"List the data contributors of the SNCF coverage (typically transport authorities) with name, website and licence. Use fo","description":"List the data contributors of the SNCF coverage (typically transport authorities) with name, website and licence. Use for \"Who provides the transport data for the SNCF network\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 200).","title":"Count"},"start_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0.","title":"Start Page"}},"title":"list_contributorsArguments","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}}}}