Lviv Public Transport
Server Details
Lviv public transport MCP: stops, timetables, routes, and live vehicle positions. No API key.
- Status
- Healthy
- Uptime
- 99.5% over 77 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- vbhjckfd/timetable-api-node
- GitHub Stars
- 3
- Server Listing
- mcp-lad-lviv-ua
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 9 tools
The tools have clearly separate query scopes: routing, stop search, nearby stops, static route data, live arrivals at a stop, live vehicles on a route, nearby vehicles, one vehicle, and disruptions. Several descriptions explicitly redirect to the correct alternative tool, so boundaries between the realtime tools are clear.
All names use snake_case and are verb-first, resource-oriented names such as get_route_static, get_stop_realtime, search_stops, and find_routes_between. The mix of get/search/find is semantically consistent rather than chaotic.
Nine tools are well-scoped for a public transport server covering routing, stops, routes, realtime data, vehicles, and disruptions. Each tool has a distinct role and none feels redundant or excessive.
The surface covers the main agent workflows well: finding stops, planning trips, checking route/stop/vehicle realtime data, and learning about disruptions. Minor gaps include no explicit route search/list tool and no full stop-level timetable beyond live arrivals, but agents can work around these using stop and route results.
Available Tools
9 toolsfind_routes_betweenFind Routes Between StopsARead-onlyIdempotentInspect
Lists the routes from one place to another: which stop to board, where to get off, the direction's destination, stops in between, and the walk at each end — best first, walking counted. Each end is a stop ID (from_stop_id) or coordinates (from_lat + from_lng), e.g. an address the user gave; a point covers every stop within a 600 m walk of it. options are direct routes. transfer_options have exactly one interchange (never more): ride legs[0], walk transfer_walk_meters (within a 300 m stop cluster, 0 when it is the same stop) to legs[1].board_stop, ride legs[1]. They are listed when there is no direct route or when they beat the best direct one. Every option carries schedule: by the timetable, when to leave, when each leg boards and alights, when you arrive, and total_minutes door to door. Plan for now by default, or pass depart_at or arrive_by ("HH:MM" Lviv time today, or ISO 8601). When planning for now, options also carry next_departures: the live next departures of the first leg from its boarding stop, so no separate get_stop_realtime call is needed. map_stops holds the best trip's stops in riding order, each with a role (board, transfer — or transfer_alight + transfer_board when the interchange is a walk — and alight). Use when the user asks how to get from A to B, which bus/tram goes from one place to another, how long it takes, or when to leave to be somewhere on time. A stop end covers every stop within a 300 m walk of it, since a line's two directions often stop on opposite sides of a street under different names; board_stop says where to actually wait. Routes the city has suspended, and stops a detour skips, are left out. walk_meters is set when the two ends are within a 300 m walk of each other: no ride is searched then, so tell the user to walk. Otherwise both lists empty means the trip needs two or more transfers. Get stop IDs with search_stops or get_stops_around_location.
| Name | Required | Description | Default |
|---|---|---|---|
| to_lat | No | Decimal latitude of the destination, WGS84 (e.g. 49.842 for central Lviv). | |
| to_lng | No | Decimal longitude of the destination, WGS84 (e.g. 24.031 for central Lviv). | |
| from_lat | No | Decimal latitude of the start point, WGS84 (e.g. 49.842 for central Lviv). | |
| from_lng | No | Decimal longitude of the start point, WGS84 (e.g. 24.031 for central Lviv). | |
| arrive_by | No | Arrive by this time: "HH:MM" Lviv time today, or ISO 8601. Not together with `depart_at`. | |
| depart_at | No | Leave at this time: "HH:MM" Lviv time today, or ISO 8601. Default now. Not together with `arrive_by`. | |
| to_stop_id | No | Stop ID where the trip ends. Give this or `to_lat` + `to_lng`. | |
| from_stop_id | No | Stop ID where the trip starts. Give this or `from_lat` + `from_lng`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/openWorld, and the description goes well beyond that with hard behavioral facts: at most one interchange, transfers only surfaced when they beat the best direct route, suspended routes and skipped stops filtered out, the walk_meters short-circuit when ends are within 300 m, and empty lists meaning two-plus transfers are required. It also discloses the lazy live-data behavior (next_departures included only when planning for now).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the result shape, then endpoints, then option types, then time parameters, then usage triggers — a sensible ordering with no filler sentences. It is dense and long, with heavy parenthetical nesting around transfer_walk_meters and the role enumeration, but essentially every sentence carries information an agent would otherwise have to infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter, open-world routing tool with an output schema, the description covers the result structure, transfer constraints, filtering rules, time semantics, and the coordinate-vs-stop radius distinction. Nothing material an agent would need to call it correctly or to explain results to a user appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine interpretive meaning: a coordinate end covers every stop within a 600 m walk while a stop ID end covers a 300 m cluster, and both directions of a line may appear under different names with board_stop saying where to actually wait. The depart_at/arrive_by formats are restated from the schema rather than extended, which keeps this just short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Lists the routes from one place to another") and immediately enumerates what each result carries: boarding stop, alighting stop, direction destination, intermediate stops, and end walks. It also names the sibling tools it is not (get_stop_realtime, search_stops, get_stops_around_location), so an agent can route correctly without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains an explicit trigger list: "Use when the user asks how to get from A to B, which bus/tram goes from one place to another, how long it takes, or when to leave to be somewhere on time." It also names the alternatives for obtaining stop IDs (search_stops, get_stops_around_location) and states that no separate get_stop_realtime call is needed, which is exactly the kind of exclusion an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disruptionsGet DisruptionsARead-onlyIdempotentInspect
Lists closures, detours and moved stops the city announced that are in force today: affected routes, the streets a detour uses, routes to take instead of a suspended one, reason, dates and source. The GTFS stop lists and timetables do not reflect any of this. Use when the user asks about road works, closures, detours, or why a route is not running or a vehicle is off its usual path. Pass route and/or stop_id to get only the entries touching them; omit both for the whole city.
| Name | Required | Description | Default |
|---|---|---|---|
| route | No | Only disruptions on this route, by short name (e.g. "Т30", "А34"). Omit for all routes. | |
| stop_id | No | Only disruptions at this stop. Omit for all stops. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and open-world, so the description's added value is the temporal scope ('in force today'), the source being city announcements, and the warning that GTFS data does not reflect any of it. It does not discuss result volume or freshness beyond 'today', which keeps it just short of a 5 for an open-world read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and its scope, then the usage condition, then the filtering mechanics. Dense but every clause carries information an agent needs; nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return values, and it still names the key fields. Two optional, fully documented parameters plus read-only annotations mean nothing needed for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds combination semantics the schema does not: filters are conjunctive with the concept of 'entries touching them' and omitting both returns the whole city. That is genuine meaning beyond the per-parameter text, though it adds no format examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (lists closures, detours and moved stops) plus the exact scope ('in force today') and the payload (affected routes, detour streets, substitute routes, reason, dates, source). An agent can immediately tell this apart from timetable/static siblings like get_route_static or get_route_realtime.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggering conditions ('road works, closures, detours, or why a route is not running or a vehicle is off its usual path') and explicitly rules out the GTFS stop lists and timetables, which routes the agent away from the static siblings. The filtering instruction ('pass route and/or stop_id... omit both for the whole city') further tells it how to scope the call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nearby_vehiclesGet Nearby VehiclesARead-onlyIdempotentInspect
Returns live vehicles near a point, nearest first, each with its route, destination, and distance. Use when the user asks "what transport is near me right now?" or wants a live map around a location. Narrow with route when the user cares about one line; prefer get_route_realtime for a whole route and get_stop_realtime for arrival times at a stop. Requires decimal latitude and longitude (WGS84).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum vehicles to return, nearest first (1–50, default 15). `total` reports how many were in range. | |
| route | No | Only vehicles on this route, by short name (e.g. "Т30", "А1"). Omit for all routes. | |
| latitude | Yes | Decimal latitude of the centre point, WGS84 (e.g. 49.842 for central Lviv). | |
| longitude | Yes | Decimal longitude of the centre point, WGS84 (e.g. 24.031 for central Lviv). | |
| lowfloor_only | No | Only low-floor vehicles (step-free: wheelchairs, prams). Timetable entries without a tracked vehicle are left out, since their floor is unknown. Default false. | |
| radius_meters | No | Search radius in metres (100–1000, default 500). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world, so the safety profile is covered. The description adds what annotations cannot: results are live rather than scheduled, ordered nearest-first, and coordinate system must be WGS84 decimal degrees. It does not disclose radius behavior defaults or what happens for out-of-range points, but the schema carries the radius bounds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the return shape, then usage, then prerequisites. Every clause carries information the schema does not: ordering, liveness, routing to alternatives, coordinate system.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description need not explain return fields, and it doesn't. For a read-only spatial lookup with annotations and full schema coverage, nothing an agent needs to select or invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning: the 'narrow with route for one line' guidance and the explicit WGS84 requirement frame how latitude/longitude and route are meant to be combined. The lowfloor_only and limit subtleties remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (returns live vehicles near a point), the ordering (nearest first), and the payload (route, destination, distance). An agent can distinguish this from get_route_realtime and get_stop_realtime without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger phrasing ('what transport is near me right now?'), a narrowing condition for the route parameter, and names two siblings with the conditions that select them instead. Only the remaining siblings (get_vehicle_info, get_stops_around_location) go unmentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_route_realtimeGet Route RealtimeARead-onlyIdempotentInspect
Returns every vehicle currently running on a route: position, the destination it is heading to, and its next stop with estimated arrival. headways sums up each direction: how many vehicles run, the live gaps between consecutive vehicles in minutes (front to back), and how often the timetable says it should run right now. Use when the user asks "where is my tram/bus right now?", how many vehicles are running, how far the next one is, or how often a route runs. Pass direction (0 or 1, as in get_route_static's stops) to get only one way. Prefer get_stop_realtime when the user is at a stop and wants arrival times there. Requires a route short name (e.g. "T30", "32A") or numeric external ID.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | Only vehicles heading this way: 0 or 1, the index into get_route_static's `stops`. Omit for both. | |
| route_name | Yes | Route short name (e.g. "T30", "32A") or numeric external ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world behavior, so the description is not carrying the safety burden. It does add real semantic context beyond them: what `headways` actually computes (vehicle count per direction, live front-to-back gaps in minutes, current scheduled frequency) and what `direction` filtering does. It stops short of stating freshness/lag of the live data or what happens when a route has no running vehicles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Use cases and output content are front-loaded, and the sibling routing plus input constraints follow in a logical order. The `headways` sentence is dense and slightly parenthetical, but every clause conveys information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return structure, and with only two fully documented parameters the input side is covered. The only material omission is runtime behavior for edge cases such as an unknown route name or a route with no active vehicles, which matters for an open-world live-data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents both fields. The description still adds cross-tool meaning by tying `direction` to the index into get_route_static's `stops` and by restating the accepted route identifier formats, which helps an agent resolve the value correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Returns every vehicle currently running on a route', then enumerates the payload (position, destination, next stop ETA) and the additional `headways` aggregate. It is clearly distinguishable from get_route_static (schedule/stops) and get_stop_realtime (per-stop arrivals) named later in the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete user intents that select this tool ("where is my tram/bus right now?", vehicle counts, next-vehicle distance, frequency) and names the alternative explicitly: prefer `get_stop_realtime` when the user is at a stop. It also states the required input form (short name like "T30" or numeric external ID).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_route_staticGet Route StaticARead-onlyIdempotentInspect
Returns static route data: name, long name, vehicle type, colour, the ordered stop list for both directions, and the timetable of departures from the first stop (workday, Saturday and Sunday). Use when the user asks which stops a route serves, where it goes, or its scheduled departure times. Set include_shapes only when you will draw the route on a map — the polylines are large and carry nothing a text answer needs. Do NOT use this for live vehicle positions — use get_route_realtime instead. Requires a route short name (e.g. "T30", "32A") or numeric external ID.
| Name | Required | Description | Default |
|---|---|---|---|
| route_name | Yes | Route short name (e.g. "T30", "32A") or numeric external ID. | |
| include_shapes | No | Include route polylines ([lat, lng] points per direction) for map drawing. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world behavior. The description adds useful behavioral context beyond annotations by listing the data returned and warning that `include_shapes` polylines are large and unnecessary for text answers. It does not discuss rate limits or auth, but those are minor for this static read-only lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with what the tool returns and when to use it, followed by the alternative tool and the optional parameter caveat. Every sentence earns its place, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description does not need to document return structure in full. It still summarizes the returned data and warns about the large shape payload, which is exactly the context an agent needs for a two-parameter static route lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters and the baseline is 3. The description adds decision semantics for `include_shapes`: it should be set only for map drawing because the polylines are large and carry nothing needed for a text answer. It also restates accepted `route_name` formats, reinforcing the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Returns static route data', then enumerates the key contents such as name, long name, vehicle type, colour, ordered stop lists, and timetable. It also explicitly distinguishes this from `get_route_realtime` for live vehicle positions, so an agent can identify the correct sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: which stops a route serves, where it goes, or scheduled departure times. It also gives explicit when-not-to-use guidance: live vehicle positions should use `get_route_realtime`, and `include_shapes` should be set only when drawing the route on a map. The required route-name forms are also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stop_realtimeGet Stop RealtimeARead-onlyIdempotentInspect
Returns live arrivals at a stop: route, destination, vehicle type, minutes until arrival, and each vehicle's position. Use this as the default tool when the user asks about arrivals, departures, or the next bus/tram at a specific stop. Requires a numeric stop ID (shown on stop signage); use search_stops when you have a stop name, or get_stops_around_location when you have coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| stop_id | Yes | Municipal stop code shown on stop signage (e.g. 707). Accepts a positive integer or an equivalent digit-only string. | |
| lowfloor_only | No | Only low-floor arrivals (step-free: wheelchairs, prams). Timetable entries without a tracked vehicle are left out, since their floor is unknown. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds the realtime nature of the data and the hard prerequisite of a numeric stop ID from signage, which is genuinely useful context. It stops short of disclosing data freshness, coverage, or failure behavior when a stop has no live vehicles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the tool returns, followed by the default-usage directive and the disambiguation hints. No redundant phrasing; the bold emphasis marks the key routing instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, yet the description still summarizes the payload. Combined with the prerequisite and the sibling routing, an agent has everything needed to call this correctly without opening another definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains the municipal stop code and the low-floor filter in detail, so the description adds little on parameters. Its one contribution is routing the agent to the correct lookup tool when it lacks a stop ID. Baseline 3 is appropriate when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Returns live arrivals at a stop') and enumerates the payload (route, destination, vehicle type, minutes until arrival, vehicle position). It is unmistakably distinct from siblings such as get_route_realtime or get_vehicle_info because it is scoped to a single stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly designates itself as the 'default tool' for arrivals/departures/next-bus questions at a specific stop, then names the two alternatives with the exact condition that selects each: `search_stops` for a stop name and `get_stops_around_location` for coordinates. This is the when/when-not/alternative pattern in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stops_around_locationGet Stops Around LocationARead-onlyIdempotentInspect
Finds stops near a geographic point, returning each stop's numeric ID, name, coordinates, walking distance, and the routes serving it. Use this as the first step when the user gives an address or coordinates and you need stop IDs for get_stop_realtime or find_routes_between. Use search_stops instead when the user gives a stop name. Default radius is 1 000 m; narrow it (e.g. 300 m) for dense urban areas or widen it (up to 3 000 m) for rural locations.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Decimal latitude of the search centre, WGS84 (e.g. 49.842 for central Lviv). | |
| longitude | Yes | Decimal longitude of the search centre, WGS84 (e.g. 24.031 for central Lviv). | |
| radius_meters | No | Search radius in metres (50–3000, default 1000). Use ~300 for dense urban intersections, up to 3000 for suburban or rural areas. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered; the description adds value by disclosing what is returned and how radius tuning affects results in dense vs. rural settings. It stops short of noting pagination, result caps, or behaviour when no stops are found, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return fields, then usage routing, then radius tuning — a logical order with no filler. Minor waste comes from repeating the 300 m / 3 000 m radius guidance already present in the parameter descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read tool with an output schema, the description covers selection, alternatives, downstream use, and the one behavioural knob (radius) that changes result quality. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter already documents its range, WGS84 format and urban/rural sizing advice, so the description's radius guidance largely restates the schema. It adds no new syntax or interpretation beyond that, which matches the baseline 3 for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds stops near a geographic point') and enumerates the returned fields (ID, name, coordinates, walking distance, serving routes), which lets an agent distinguish it from search_stops and get_stop_realtime without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions the tool as the 'first step' when the input is an address or coordinates, names the downstream tools that consume the stop IDs, and gives a clear exclusion rule: use search_stops when the user supplies a stop name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehicle_infoGet Vehicle InfoARead-onlyIdempotentInspect
Returns details for one vehicle by ID: position, route, destination, license plate, and its upcoming stops with names and estimated arrival times. Use when the user wants to follow a particular vehicle, e.g. "where does this tram go next?" or "when will it reach X?". Vehicle IDs come from get_route_realtime, get_nearby_vehicles, or get_stop_realtime results. Do NOT use this to get all vehicles on a route — use get_route_realtime instead.
| Name | Required | Description | Default |
|---|---|---|---|
| vehicle_id | Yes | Vehicle ID as returned by get_route_realtime, get_nearby_vehicles, or get_stop_realtime. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered; the description still adds behavioral value by stating the single-vehicle scope and that results include upcoming stops with estimated arrival times. It omits edge behavior such as what happens with an unknown or stale vehicle ID, which is the main remaining gap given the response schema already documents the shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences: capability and payload first, usage and provenance second, anti-pattern third. No filler and the ordering is front-loaded for fast triage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
One required parameter, full schema coverage, an output schema that carries the return shape, and rich annotations — the description supplies exactly the missing layer (when to use it, where IDs come from, which sibling to prefer) without redundant explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single vehicle_id parameter is already documented with its provenance, so the description's mention of ID sources largely restates the schema. There is no extra guidance on ID format, case sensitivity, or what to do if an ID is rejected, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Returns details for one vehicle by ID') plus an enumeration of the payload (position, route, destination, license plate, upcoming stops with ETAs), and it explicitly distinguishes itself from get_route_realtime, which returns all vehicles on a route.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use with two natural-language user intents, states the prerequisite (where vehicle IDs come from — get_route_realtime, get_nearby_vehicles, get_stop_realtime), and adds an explicit 'do NOT use this... use get_route_realtime instead' exclusion that routes the agent to the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_stopsSearch StopsARead-onlyIdempotentInspect
Finds stops by name (Ukrainian or English transliteration, case-insensitive, partial match) and returns each stop's numeric ID, coordinates, and the routes serving it. Use this as the first step when the user names a stop or landmark stop (e.g. "Опера", "Rynok", "Головний вокзал") and you need a stop ID for get_stop_realtime or find_routes_between. One name usually covers both sides of the street under different IDs; each is returned, and the routes list tells them apart. Use get_stops_around_location instead when you have coordinates rather than a name.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum stops to return (1–25, default 10). | |
| query | Yes | Stop name or part of it, e.g. "Ринок", "opera", "Стрийська". |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| view | Yes | |
| ui_blocks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), so the description focuses on behavior: matching is case-insensitive and partial, and a single name can legitimately return multiple IDs for both sides of the street, with the routes list as the disambiguator. That is genuinely useful non-obvious behavior. It stops short of describing empty-result behavior or how limit truncation is signalled, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return shape, then usage, then the alternative — a sensible ordering with no filler sentences. It is slightly longer than needed, since the inline examples ("Опера", "Rynok") partially duplicate the schema's own query examples, and the bold markup is decorative rather than structural.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage, an output schema, and annotations covering safety, the description covers essentially everything an agent needs to select and call it. The only minor gap is behavior at the boundaries — no hits, or hitting the limit cap — which is neither in the description nor the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema by declaring the query accept Ukrainian or English transliteration and that matching is case-insensitive and partial — semantics the schema's plain "Stop name or part of it" does not convey. The limit parameter is left entirely to the schema, preventing a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Finds stops by name") and immediately states the return payload: numeric ID, coordinates, and serving routes. It distinguishes itself from sibling get_stops_around_location by input type (name vs. coordinates), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions itself as the "first step" when the user names a stop, and names the two downstream consumers of the returned ID (get_stop_realtime, find_routes_between). It also states the exclusion condition: use get_stops_around_location when you have coordinates rather than a name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- Changed
find_routes_between3 fields changed- removed
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsRemoved value: -false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } -]New value: +false - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / prefixItemsAdded value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +]
- Changed
get_disruptions3 fields changed- removed
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsRemoved value: -false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } -]New value: +false - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / prefixItemsAdded value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +]
- Changed
get_nearby_vehicles3 fields changed- removed
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsRemoved value: -false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } -]New value: +false - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / prefixItemsAdded value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +]
- Changed
get_route_realtime3 fields changed- removed
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsRemoved value: -false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } -]New value: +false - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / prefixItemsAdded value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +]
- Changed
get_route_static3 fields changed- removed
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsRemoved value: -false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } -]New value: +false - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / prefixItemsAdded value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +]
- Changed
get_stop_realtime1 field changed- changed
Output schema / properties / ui_blocks / items / oneOfPrevious value: -[ - { - "properties": { - "data": { - "properties": { - "center": { - "additionalItems": false, - "items": [ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } - ], - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - "layers": { - "properties": { - "polylines": { - "type": "string" - }, - "stops": { - "type": "string" - }, - "vehicles": { - "type": "string" - } - }, - "type": "object" - }, - "zoom": { - "type": "number" - } - }, - "required": [ - "center", - "zoom", - "layers" - ], - "type": "object" - }, - "type": { - "const": "map", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" - }, - { - "properties": { - "data": { - "properties": { - "source": { - "type": "string" - } - }, - "required": [ - "source" - ], - "type": "object" - }, - "type": { - "const": "arrival_list", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "data": { + "properties": { + "center": { + "items": false, + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } + ], + "type": "array" + }, + "layers": { + "properties": { + "polylines": { + "type": "string" + }, + "stops": { + "type": "string" + }, + "vehicles": { + "type": "string" + } + }, + "type": "object" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "layers" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + }, + { + "properties": { + "data": { + "properties": { + "source": { + "type": "string" + } + }, + "required": [ + "source" + ], + "type": "object" + }, + "type": { + "const": "arrival_list", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + } +]
- Changed
get_stops_around_location3 fields changed- removed
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsRemoved value: -false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } -]New value: +false - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / prefixItemsAdded value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +]
- Changed
get_vehicle_info3 fields changed- removed
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsRemoved value: -false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } -]New value: +false - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / prefixItemsAdded value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +]
- Changed
search_stops3 fields changed- removed
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsRemoved value: -false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } -]New value: +false - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / prefixItemsAdded value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +]
5 tool updates
- Changed
find_routes_between2 fields changed- added
Output schema / properties / data / properties / disruptions / items / properties / areaAdded value: +{ + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "radius_meters": { + "type": "number" + } + }, + "required": [ + "lat", + "lng", + "radius_meters" + ], + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / data / properties / disruptions / items / requiredPrevious value: -[ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" -]New value: +[ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "area", + "note", + "source", + "url" +]
- Changed
get_disruptions2 fields changed- added
Output schema / properties / data / properties / disruptions / items / properties / areaAdded value: +{ + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "radius_meters": { + "type": "number" + } + }, + "required": [ + "lat", + "lng", + "radius_meters" + ], + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / data / properties / disruptions / items / requiredPrevious value: -[ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" -]New value: +[ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "area", + "note", + "source", + "url" +]
- Changed
get_route_realtime2 fields changed- added
Output schema / properties / data / properties / disruptions / items / properties / areaAdded value: +{ + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "radius_meters": { + "type": "number" + } + }, + "required": [ + "lat", + "lng", + "radius_meters" + ], + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / data / properties / disruptions / items / requiredPrevious value: -[ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" -]New value: +[ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "area", + "note", + "source", + "url" +]
- Changed
get_route_static2 fields changed- added
Output schema / properties / data / properties / disruptions / items / properties / areaAdded value: +{ + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "radius_meters": { + "type": "number" + } + }, + "required": [ + "lat", + "lng", + "radius_meters" + ], + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / data / properties / disruptions / items / requiredPrevious value: -[ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" -]New value: +[ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "area", + "note", + "source", + "url" +]
- Changed
get_stop_realtime2 fields changed- added
Output schema / properties / data / properties / disruptions / items / properties / areaAdded value: +{ + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "radius_meters": { + "type": "number" + } + }, + "required": [ + "lat", + "lng", + "radius_meters" + ], + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / data / properties / disruptions / items / requiredPrevious value: -[ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" -]New value: +[ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "area", + "note", + "source", + "url" +]
9 tool updates
- Changed
find_routes_between67 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / properties / from_stop_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / to_stop_id / maximumRemoved value: -9007199254740991 - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / alternatives / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / detour / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / propertiesAdded value: +{ + "skipped_stops": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } +} - added
Output schema / properties / data / properties / disruptions / items / properties / detour / requiredAdded value: +[ + "via", + "skipped_stops" +] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / data / properties / disruptions / items / properties / routes / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / from / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / from / properties / point / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / map_stops / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / options / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / options / items / properties / alight_stop / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / options / items / properties / board_stop / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / options / items / properties / direction / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / options / items / properties / direction / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / options / items / properties / next_departures / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / options / items / properties / next_departures / items / properties / arrival_minutes / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / options / items / properties / next_departures / items / properties / arrival_minutes / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / data / properties / options / items / properties / schedule / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "arrive_at": { - "type": "string" - }, - "leave_at": { - "type": "string" - }, - "legs": { - "items": { - "additionalProperties": false, - "properties": { - "alight_at": { - "type": "string" - }, - "board_at": { - "type": "string" - } - }, - "required": [ - "board_at", - "alight_at" - ], - "type": "object" - }, - "type": "array" - }, - "total_minutes": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - } - }, - "required": [ - "leave_at", - "arrive_at", - "total_minutes", - "legs" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / options / items / properties / schedule / propertiesAdded value: +{ + "arrive_at": { + "type": "string" + }, + "leave_at": { + "type": "string" + }, + "legs": { + "items": { + "properties": { + "alight_at": { + "type": "string" + }, + "board_at": { + "type": "string" + } + }, + "required": [ + "board_at", + "alight_at" + ], + "type": "object" + }, + "type": "array" + }, + "total_minutes": { + "type": "integer" + } +} - added
Output schema / properties / data / properties / options / items / properties / schedule / requiredAdded value: +[ + "leave_at", + "arrive_at", + "total_minutes", + "legs" +] - added
Output schema / properties / data / properties / options / items / properties / schedule / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / data / properties / options / items / properties / stops_count / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / options / items / properties / stops_count / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / options / items / properties / walk_from_alight_meters / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / options / items / properties / walk_from_alight_meters / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / options / items / properties / walk_to_board_meters / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / options / items / properties / walk_to_board_meters / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / timing / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / to / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / to / properties / point / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / transfer_options / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / transfer_options / items / properties / legs / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / alight_stop / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / board_stop / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / direction / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / direction / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / stops_count / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / stops_count / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / next_departures / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / transfer_options / items / properties / next_departures / items / properties / arrival_minutes / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / transfer_options / items / properties / next_departures / items / properties / arrival_minutes / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / data / properties / transfer_options / items / properties / schedule / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "arrive_at": { - "type": "string" - }, - "leave_at": { - "type": "string" - }, - "legs": { - "items": { - "additionalProperties": false, - "properties": { - "alight_at": { - "type": "string" - }, - "board_at": { - "type": "string" - } - }, - "required": [ - "board_at", - "alight_at" - ], - "type": "object" - }, - "type": "array" - }, - "total_minutes": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - } - }, - "required": [ - "leave_at", - "arrive_at", - "total_minutes", - "legs" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / transfer_options / items / properties / schedule / propertiesAdded value: +{ + "arrive_at": { + "type": "string" + }, + "leave_at": { + "type": "string" + }, + "legs": { + "items": { + "properties": { + "alight_at": { + "type": "string" + }, + "board_at": { + "type": "string" + } + }, + "required": [ + "board_at", + "alight_at" + ], + "type": "object" + }, + "type": "array" + }, + "total_minutes": { + "type": "integer" + } +} - added
Output schema / properties / data / properties / transfer_options / items / properties / schedule / requiredAdded value: +[ + "leave_at", + "arrive_at", + "total_minutes", + "legs" +] - added
Output schema / properties / data / properties / transfer_options / items / properties / schedule / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / data / properties / transfer_options / items / properties / stops_count / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / stops_count / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / transfer_walk_meters / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / transfer_walk_meters / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / walk_from_alight_meters / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / walk_from_alight_meters / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / walk_to_board_meters / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / transfer_options / items / properties / walk_to_board_meters / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / walk_meters / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / walk_meters / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / ui_blocks / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / properties / layers / additionalPropertiesRemoved value: -false
- Changed
get_disruptions17 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / properties / stop_id / maximumRemoved value: -9007199254740991 - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / alternatives / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / detour / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / propertiesAdded value: +{ + "skipped_stops": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } +} - added
Output schema / properties / data / properties / disruptions / items / properties / detour / requiredAdded value: +[ + "via", + "skipped_stops" +] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / data / properties / disruptions / items / properties / routes / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / ui_blocks / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / properties / layers / additionalPropertiesRemoved value: -false
- Changed
get_nearby_vehicles12 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / total / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / total / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / vehicles / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / vehicles / items / properties / direction / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / direction / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / ui_blocks / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / properties / layers / additionalPropertiesRemoved value: -false
- Changed
get_route_realtime34 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / direction / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / direction / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / data / properties / disruptions / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / alternatives / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / detour / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / propertiesAdded value: +{ + "skipped_stops": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } +} - added
Output schema / properties / data / properties / disruptions / items / properties / detour / requiredAdded value: +[ + "via", + "skipped_stops" +] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / data / properties / disruptions / items / properties / routes / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / headways / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / headways / items / properties / direction / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / headways / items / properties / direction / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / headways / items / properties / gaps_minutes / items / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / headways / items / properties / gaps_minutes / items / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / data / properties / headways / items / properties / scheduled_headway_minutes / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / headways / items / properties / scheduled_headway_minutes / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / data / properties / headways / items / properties / vehicles / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / headways / items / properties / vehicles / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / vehicles / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / vehicles / items / properties / direction / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / direction / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / next_stop / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "arrival": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "name", - "arrival" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / next_stop / propertiesAdded value: +{ + "arrival": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + } +} - added
Output schema / properties / data / properties / vehicles / items / properties / next_stop / requiredAdded value: +[ + "id", + "name", + "arrival" +] - added
Output schema / properties / data / properties / vehicles / items / properties / next_stop / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / ui_blocks / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / properties / layers / additionalPropertiesRemoved value: -false
- Changed
get_route_static19 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / alternatives / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / detour / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / propertiesAdded value: +{ + "skipped_stops": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } +} - added
Output schema / properties / data / properties / disruptions / items / properties / detour / requiredAdded value: +[ + "via", + "skipped_stops" +] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / data / properties / disruptions / items / properties / routes / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / route / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / stops / items / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / stops / items / items / properties / schedule / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / properties / layers / additionalPropertiesRemoved value: -false
- Changed
get_stop_realtime19 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / properties / stop_id / maximumRemoved value: -9007199254740991 - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / arrivals / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / arrivals / items / properties / arrival_minutes / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / arrivals / items / properties / arrival_minutes / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / data / properties / disruptions / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / alternatives / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / detour / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / propertiesAdded value: +{ + "skipped_stops": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } +} - added
Output schema / properties / data / properties / disruptions / items / properties / detour / requiredAdded value: +[ + "via", + "skipped_stops" +] - added
Output schema / properties / data / properties / disruptions / items / properties / detour / typeAdded value: +[ + "object", + "null" +] - removed
Output schema / properties / data / properties / disruptions / items / properties / routes / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / data / properties / disruptions / items / properties / stops / items / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / data / properties / stop / additionalPropertiesRemoved value: -false - changed
Output schema / properties / ui_blocks / items / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "center": { - "additionalItems": false, - "items": [ - { - "type": [ - "number", - "null" - ] - }, - { - "type": [ - "number", - "null" - ] - } - ], - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - "layers": { - "additionalProperties": false, - "properties": { - "polylines": { - "type": "string" - }, - "stops": { - "type": "string" - }, - "vehicles": { - "type": "string" - } - }, - "type": "object" - }, - "zoom": { - "type": "number" - } - }, - "required": [ - "center", - "zoom", - "layers" - ], - "type": "object" - }, - "type": { - "const": "map", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "source": { - "type": "string" - } - }, - "required": [ - "source" - ], - "type": "object" - }, - "type": { - "const": "arrival_list", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "data": { + "properties": { + "center": { + "additionalItems": false, + "items": [ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "layers": { + "properties": { + "polylines": { + "type": "string" + }, + "stops": { + "type": "string" + }, + "vehicles": { + "type": "string" + } + }, + "type": "object" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "layers" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + }, + { + "properties": { + "data": { + "properties": { + "source": { + "type": "string" + } + }, + "required": [ + "source" + ], + "type": "object" + }, + "type": { + "const": "arrival_list", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + } +]
- Changed
get_stops_around_location8 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / stops / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / properties / layers / additionalPropertiesRemoved value: -false
- Changed
get_vehicle_info10 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / direction / anyOfRemoved value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / direction / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / properties / data / properties / upcoming_stops / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / properties / layers / additionalPropertiesRemoved value: -false
- Changed
search_stops8 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / data / properties / stops / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / additionalPropertiesRemoved value: -false - removed
Output schema / properties / ui_blocks / items / properties / data / properties / layers / additionalPropertiesRemoved value: -false
4 tool updates
- Changed
find_routes_between20 fields changed- added
Input schema / properties / arrive_byAdded value: +{ + "description": "Arrive by this time: \"HH:MM\" Lviv time today, or ISO 8601. Not together with `depart_at`.", + "type": "string" +} - added
Input schema / properties / depart_atAdded value: +{ + "description": "Leave at this time: \"HH:MM\" Lviv time today, or ISO 8601. Default now. Not together with `arrive_by`.", + "type": "string" +} - added
Input schema / properties / from_latAdded value: +{ + "description": "Decimal latitude of the start point, WGS84 (e.g. 49.842 for central Lviv).", + "maximum": 90, + "minimum": -90, + "type": "number" +} - added
Input schema / properties / from_lngAdded value: +{ + "description": "Decimal longitude of the start point, WGS84 (e.g. 24.031 for central Lviv).", + "maximum": 180, + "minimum": -180, + "type": "number" +} - changed
Input schema / properties / from_stop_id / descriptionPrevious value: -"Stop ID where the trip starts."New value: +"Stop ID where the trip starts. Give this or `from_lat` + `from_lng`." - added
Input schema / properties / to_latAdded value: +{ + "description": "Decimal latitude of the destination, WGS84 (e.g. 49.842 for central Lviv).", + "maximum": 90, + "minimum": -90, + "type": "number" +} - added
Input schema / properties / to_lngAdded value: +{ + "description": "Decimal longitude of the destination, WGS84 (e.g. 24.031 for central Lviv).", + "maximum": 180, + "minimum": -180, + "type": "number" +} - changed
Input schema / properties / to_stop_id / descriptionPrevious value: -"Stop ID where the trip ends."New value: +"Stop ID where the trip ends. Give this or `to_lat` + `to_lng`." - removed
Input schema / requiredRemoved value: -[ - "from_stop_id", - "to_stop_id" -] - added
Output schema / properties / data / properties / from / properties / pointAdded value: +{ + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + } + }, + "required": [ + "lat", + "lng" + ], + "type": "object" +} - added
Output schema / properties / data / properties / options / items / properties / next_departuresAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "arrival_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "lowfloor": { + "type": [ + "boolean", + "null" + ] + }, + "scheduled": { + "type": "boolean" + }, + "vehicle_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "arrival_minutes", + "scheduled", + "vehicle_id", + "lowfloor" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / data / properties / options / items / properties / scheduleAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "arrive_at": { + "type": "string" + }, + "leave_at": { + "type": "string" + }, + "legs": { + "items": { + "additionalProperties": false, + "properties": { + "alight_at": { + "type": "string" + }, + "board_at": { + "type": "string" + } + }, + "required": [ + "board_at", + "alight_at" + ], + "type": "object" + }, + "type": "array" + }, + "total_minutes": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "leave_at", + "arrive_at", + "total_minutes", + "legs" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / data / properties / options / items / requiredPrevious value: -[ - "route", - "vehicle_type", - "direction", - "destination", - "board_stop", - "alight_stop", - "stops_count", - "walk_to_board_meters", - "walk_from_alight_meters" -]New value: +[ + "route", + "vehicle_type", + "direction", + "destination", + "board_stop", + "alight_stop", + "stops_count", + "walk_to_board_meters", + "walk_from_alight_meters", + "schedule" +] - added
Output schema / properties / data / properties / timingAdded value: +{ + "additionalProperties": false, + "properties": { + "at": { + "type": "string" + }, + "mode": { + "enum": [ + "depart_at", + "arrive_by" + ], + "type": "string" + } + }, + "required": [ + "mode", + "at" + ], + "type": "object" +} - added
Output schema / properties / data / properties / to / properties / pointAdded value: +{ + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + } + }, + "required": [ + "lat", + "lng" + ], + "type": "object" +} - added
Output schema / properties / data / properties / transfer_options / items / properties / next_departuresAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "arrival_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "lowfloor": { + "type": [ + "boolean", + "null" + ] + }, + "scheduled": { + "type": "boolean" + }, + "vehicle_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "arrival_minutes", + "scheduled", + "vehicle_id", + "lowfloor" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / data / properties / transfer_options / items / properties / scheduleAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "arrive_at": { + "type": "string" + }, + "leave_at": { + "type": "string" + }, + "legs": { + "items": { + "additionalProperties": false, + "properties": { + "alight_at": { + "type": "string" + }, + "board_at": { + "type": "string" + } + }, + "required": [ + "board_at", + "alight_at" + ], + "type": "object" + }, + "type": "array" + }, + "total_minutes": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "leave_at", + "arrive_at", + "total_minutes", + "legs" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / data / properties / transfer_options / items / requiredPrevious value: -[ - "legs", - "transfer_walk_meters", - "stops_count", - "walk_to_board_meters", - "walk_from_alight_meters" -]New value: +[ + "legs", + "transfer_walk_meters", + "stops_count", + "walk_to_board_meters", + "walk_from_alight_meters", + "schedule" +] - added
Output schema / properties / data / properties / walk_metersAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Output schema / properties / data / requiredPrevious value: -[ - "from", - "to", - "options", - "transfer_options", - "map_stops", - "updated_at" -]New value: +[ + "from", + "to", + "timing", + "options", + "transfer_options", + "map_stops", + "updated_at" +]
- Changed
get_nearby_vehicles3 fields changed- added
Input schema / properties / lowfloor_onlyAdded value: +{ + "description": "Only low-floor vehicles (step-free: wheelchairs, prams). Timetable entries without a tracked vehicle are left out, since their floor is unknown. Default false.", + "type": "boolean" +} - added
Output schema / properties / data / properties / lowfloor_onlyAdded value: +{ + "type": "boolean" +} - changed
Output schema / properties / data / requiredPrevious value: -[ - "center_lat", - "center_lng", - "radius_meters", - "total", - "vehicles", - "updated_at" -]New value: +[ + "center_lat", + "center_lng", + "radius_meters", + "lowfloor_only", + "total", + "vehicles", + "updated_at" +]
- Changed
get_route_realtime4 fields changed- added
Input schema / properties / directionAdded value: +{ + "description": "Only vehicles heading this way: 0 or 1, the index into get_route_static's `stops`. Omit for both.", + "maximum": 1, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / data / properties / directionAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / data / properties / headwaysAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "destination": { + "type": [ + "string", + "null" + ] + }, + "direction": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "gaps_minutes": { + "items": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "type": "array" + }, + "scheduled_headway_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "vehicles": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "direction", + "destination", + "vehicles", + "gaps_minutes", + "scheduled_headway_minutes" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / data / requiredPrevious value: -[ - "route_name", - "destinations", - "vehicles", - "updated_at" -]New value: +[ + "route_name", + "destinations", + "direction", + "vehicles", + "headways", + "updated_at" +]
- Changed
get_stop_realtime6 fields changed- added
Input schema / properties / lowfloor_onlyAdded value: +{ + "description": "Only low-floor arrivals (step-free: wheelchairs, prams). Timetable entries without a tracked vehicle are left out, since their floor is unknown. Default false.", + "type": "boolean" +} - added
Output schema / properties / data / properties / arrivals / items / properties / lowfloorAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Output schema / properties / data / properties / arrivals / items / properties / scheduledAdded value: +{ + "type": "boolean" +} - changed
Output schema / properties / data / properties / arrivals / items / requiredPrevious value: -[ - "route", - "direction", - "vehicle_type", - "arrival_minutes", - "vehicle_id", - "lat", - "lng", - "bearing" -]New value: +[ + "route", + "direction", + "vehicle_type", + "arrival_minutes", + "vehicle_id", + "lat", + "lng", + "bearing", + "lowfloor", + "scheduled" +] - added
Output schema / properties / data / properties / lowfloor_onlyAdded value: +{ + "type": "boolean" +} - changed
Output schema / properties / data / requiredPrevious value: -[ - "stop", - "arrivals", - "updated_at" -]New value: +[ + "stop", + "arrivals", + "lowfloor_only", + "updated_at" +]
5 tool updates
- Changed
find_routes_between1 field changed- added
Output schema / properties / data / properties / disruptionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "detour": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "skipped_stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "via", + "skipped_stops" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "kind": { + "enum": [ + "suspended", + "detour", + "stop_moved", + "stop_closed" + ], + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "until": { + "type": [ + "string", + "null" + ] + }, + "until_text": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "note", + "source", + "url" + ], + "type": "object" + }, + "type": "array" +}
- Added
get_disruptions - Changed
get_route_realtime1 field changed- added
Output schema / properties / data / properties / disruptionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "detour": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "skipped_stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "via", + "skipped_stops" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "kind": { + "enum": [ + "suspended", + "detour", + "stop_moved", + "stop_closed" + ], + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "until": { + "type": [ + "string", + "null" + ] + }, + "until_text": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "note", + "source", + "url" + ], + "type": "object" + }, + "type": "array" +}
- Changed
get_route_static1 field changed- added
Output schema / properties / data / properties / disruptionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "detour": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "skipped_stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "via", + "skipped_stops" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "kind": { + "enum": [ + "suspended", + "detour", + "stop_moved", + "stop_closed" + ], + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "until": { + "type": [ + "string", + "null" + ] + }, + "until_text": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "note", + "source", + "url" + ], + "type": "object" + }, + "type": "array" +}
- Changed
get_stop_realtime1 field changed- added
Output schema / properties / data / properties / disruptionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "detour": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "skipped_stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "via", + "skipped_stops" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "kind": { + "enum": [ + "suspended", + "detour", + "stop_moved", + "stop_closed" + ], + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "until": { + "type": [ + "string", + "null" + ] + }, + "until_text": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "note", + "source", + "url" + ], + "type": "object" + }, + "type": "array" +}
5 tool updates
- Changed
find_routes_between1 field changed- removed
Output schema / properties / data / properties / disruptionsRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "alternatives": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name", - "id" - ], - "type": "object" - }, - "type": "array" - }, - "detour": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "kind": { - "enum": [ - "suspended", - "detour", - "stop_moved", - "stop_closed" - ], - "type": "string" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "reason": { - "type": "string" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name", - "id" - ], - "type": "object" - }, - "type": "array" - }, - "since": { - "type": "string" - }, - "source": { - "type": [ - "string", - "null" - ] - }, - "stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "until": { - "type": [ - "string", - "null" - ] - }, - "until_text": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" - ], - "type": "object" - }, - "type": "array" -}
- Removed
get_disruptions - Changed
get_route_realtime1 field changed- removed
Output schema / properties / data / properties / disruptionsRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "alternatives": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name", - "id" - ], - "type": "object" - }, - "type": "array" - }, - "detour": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "kind": { - "enum": [ - "suspended", - "detour", - "stop_moved", - "stop_closed" - ], - "type": "string" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "reason": { - "type": "string" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name", - "id" - ], - "type": "object" - }, - "type": "array" - }, - "since": { - "type": "string" - }, - "source": { - "type": [ - "string", - "null" - ] - }, - "stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "until": { - "type": [ - "string", - "null" - ] - }, - "until_text": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" - ], - "type": "object" - }, - "type": "array" -}
- Changed
get_route_static1 field changed- removed
Output schema / properties / data / properties / disruptionsRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "alternatives": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name", - "id" - ], - "type": "object" - }, - "type": "array" - }, - "detour": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "kind": { - "enum": [ - "suspended", - "detour", - "stop_moved", - "stop_closed" - ], - "type": "string" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "reason": { - "type": "string" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name", - "id" - ], - "type": "object" - }, - "type": "array" - }, - "since": { - "type": "string" - }, - "source": { - "type": [ - "string", - "null" - ] - }, - "stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "until": { - "type": [ - "string", - "null" - ] - }, - "until_text": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" - ], - "type": "object" - }, - "type": "array" -}
- Changed
get_stop_realtime1 field changed- removed
Output schema / properties / data / properties / disruptionsRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "alternatives": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name", - "id" - ], - "type": "object" - }, - "type": "array" - }, - "detour": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "skipped_stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "via": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "via", - "skipped_stops" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "kind": { - "enum": [ - "suspended", - "detour", - "stop_moved", - "stop_closed" - ], - "type": "string" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "reason": { - "type": "string" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name", - "id" - ], - "type": "object" - }, - "type": "array" - }, - "since": { - "type": "string" - }, - "source": { - "type": [ - "string", - "null" - ] - }, - "stops": { - "items": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "type": "array" - }, - "until": { - "type": [ - "string", - "null" - ] - }, - "until_text": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "kind", - "reason", - "since", - "until", - "until_text", - "routes", - "stops", - "alternatives", - "detour", - "note", - "source", - "url" - ], - "type": "object" - }, - "type": "array" -}
5 tool updates
- Changed
find_routes_between1 field changed- added
Output schema / properties / data / properties / disruptionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "detour": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "skipped_stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "via", + "skipped_stops" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "kind": { + "enum": [ + "suspended", + "detour", + "stop_moved", + "stop_closed" + ], + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "until": { + "type": [ + "string", + "null" + ] + }, + "until_text": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "note", + "source", + "url" + ], + "type": "object" + }, + "type": "array" +}
- Added
get_disruptions - Changed
get_route_realtime1 field changed- added
Output schema / properties / data / properties / disruptionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "detour": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "skipped_stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "via", + "skipped_stops" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "kind": { + "enum": [ + "suspended", + "detour", + "stop_moved", + "stop_closed" + ], + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "until": { + "type": [ + "string", + "null" + ] + }, + "until_text": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "note", + "source", + "url" + ], + "type": "object" + }, + "type": "array" +}
- Changed
get_route_static1 field changed- added
Output schema / properties / data / properties / disruptionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "detour": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "skipped_stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "via", + "skipped_stops" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "kind": { + "enum": [ + "suspended", + "detour", + "stop_moved", + "stop_closed" + ], + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "until": { + "type": [ + "string", + "null" + ] + }, + "until_text": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "note", + "source", + "url" + ], + "type": "object" + }, + "type": "array" +}
- Changed
get_stop_realtime1 field changed- added
Output schema / properties / data / properties / disruptionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "detour": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "skipped_stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "via": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "via", + "skipped_stops" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "kind": { + "enum": [ + "suspended", + "detour", + "stop_moved", + "stop_closed" + ], + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "stops": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "until": { + "type": [ + "string", + "null" + ] + }, + "until_text": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "kind", + "reason", + "since", + "until", + "until_text", + "routes", + "stops", + "alternatives", + "detour", + "note", + "source", + "url" + ], + "type": "object" + }, + "type": "array" +}
1 tool update
- Changed
find_routes_between2 fields changed- added
Output schema / properties / data / properties / map_stopsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lng": { + "type": [ + "number", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "role": { + "enum": [ + "board", + "transfer", + "transfer_alight", + "transfer_board", + "alight" + ], + "type": "string" + } + }, + "required": [ + "id", + "name", + "lat", + "lng", + "role" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / data / requiredPrevious value: -[ - "from", - "to", - "options", - "transfer_options", - "updated_at" -]New value: +[ + "from", + "to", + "options", + "transfer_options", + "map_stops", + "updated_at" +]
Related MCP Connectors
SEPTA MCP — Philadelphia SEPTA real-time transit (www3.septa.org/api, keyless)
MBTA MCP — Boston real-time transit via the MBTA v3 API (api-v3.mbta.com)
Transitland MCP — global GTFS aggregator
LA Metro (LACMTA) MCP — routes, stops and live service cancellations for Los Angeles County Metro…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLive intercity bus-trip search across Ukraine and Europe — real-time prices, seats, carriers, cheapest-day-of-month calendar, and trip details with passenger discounts. Read-only, no API key; also available as a hosted remote endpoint at https://mcp.soloway.com.ua/mcp.MIT
- AlicenseAqualityDmaintenanceProvides Estonian public transport timetables, trip planning, stop search, and real-time vehicle tracking.81MIT
- FlicenseNot gradedqualityDmaintenanceMCP server providing real-time public transport data for Tomsk, including routes, schedules, stops with lazy OSM enrichment, nearby stop search, and a routing prompt for LLMs.-
- AlicenseAqualityBmaintenanceEnables public-transport journey planning, place search, realtime departures and timetables, usable from any MCP client.9MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.