Lviv Public Transport
Server Details
Lviv public transport MCP: stops, timetables, routes, and live vehicle positions. No API key.
- Status
- Healthy
- Uptime
- 99.0% over 39 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
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: stop search, nearby stops, live stop arrivals, live route tracking, static route data, nearby vehicles, vehicle details, and route planning. Cross-references in descriptions reinforce boundaries rather than blur them.
Names follow a consistent snake_case verb_noun pattern, with get_ for retrieval, search_ for search, and find_ for route planning. The few non-get names are still predictable and logically named.
Eight tools cover the core public-transport domain without bloat: each one provides a distinct and necessary operation, from journey planning to live vehicle tracking.
The set covers stop lookup, live arrivals, live vehicle positions, static route info, and direct journey planning. The only notable gap is that find_routes_between explicitly handles direct routes only, with no multi-leg transfer planning option.
Available Tools
8 toolsfind_routes_betweenFind Routes Between StopsARead-onlyIdempotentInspect
Lists the direct routes (no transfer) 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. Use when the user asks how to get from A to B, or which bus/tram goes from one place to another. Each end covers every stop within a 300 m walk of the one given, since a line's two directions often stop on opposite sides of a street under different names; board_stop says where to actually wait. An empty options list means no direct route: a transfer is needed. Requires numeric stop IDs; get them with search_stops or get_stops_around_location first. Follow up with get_stop_realtime on board_stop for live departures.
| Name | Required | Description | Default |
|---|---|---|---|
| to_stop_id | Yes | Stop ID where the trip ends. | |
| from_stop_id | Yes | Stop ID where the trip starts. |
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?
Beyond annotations (readOnlyHint, idempotentHint), the description discloses meaningful behavioral details: each endpoint covers stops within a 300 m walk, board_stop indicates where to actually wait due to directional naming differences, and an empty options list signals the need for a transfer. It also clarifies ordering ('best first, walking counted'), adding real context beyond the safety hints.
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 information-dense without redundancy: it front-loads the primary function, then covers use case, behavior details, edge cases, prerequisites, and follow-up in a logical flow. Every sentence contributes a distinct piece of guidance.
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?
Given the tool's complexityaint and existing output schema, the description covers all needed aspects: purpose, when to use, parameter acquisition, endpoint proximity behavior, empty-result meaning, and recommended follow-up. Nothing essential for correct invocation 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 practical semantics by telling the agent to obtain numeric stop IDs via search_stops or get_stops_around_location, and by explaining that each endpoint covers a radius of 300 m. This enriches the meaning of from_stop_id and to_stop_id beyond the schema's simple 'Stop ID' descriptions.
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 ('Lists the direct routes (no transfer) from one place to another') and enumerates the returned details (board stop, get off stop, destination, stops in between, walking). It also differentiates from siblings by explicitly limiting to direct routes and defining the use case as 'how to get from A to B' or 'which bus/tram goes from one place to another'.
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 provides an explicit trigger: 'Use when the user asks how to get from A to B, or which bus/tram goes from one place to another.' It also gives prerequisites ('Requires numeric stop IDs; get them with search_stops or get_stops_around_location first') and a follow-up action ('Follow up with get_stop_realtime on board_stop for live departures'). It lacks an explicit when-not for transfers, though the empty-options behavior implies it.
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). | |
| 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 readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral context: 'nearest first' ordering, returned fields, and the WGS84 coordinate requirement. It does not contradict annotations and adds meaningful detail beyond them.
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 five sentences, front-loaded with the core purpose, then usage context and alternatives. No filler or redundancy; every sentence earns its place. It is concise despite covering multiple aspects.
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 5-parameter tool with an output schema, the description covers the main use case, alternative tools, coordinate system, and parameter narrowing. It is complete enough for an agent to call it correctly without additional inference.
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 each parameter already has detailed descriptions with examples. The tool description adds a usage hint about `route` but does not add semantic meaning beyond what the schema provides. Baseline 3 is appropriate given high schema coverage.
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+resource: 'Returns live vehicles near a point' with a clear scope and output fields (route, destination, distance). It also names sibling tools to differentiate itself, making it easy for an agent to select correctly.
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?
Provides explicit when-to-use triggers ('what transport is near me right now?') and when-not-to-use alternatives ('prefer get_route_realtime for a whole route and get_stop_realtime for arrival times at a stop'). Also gives guidance on narrowing with `route`. This is exemplary.
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. Use when the user asks "where is my tram/bus right now?", how many vehicles are running, or how far the next one is. 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 |
|---|---|---|---|
| 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 declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds useful behavioral context by specifying that the tool returns every currently running vehicle, the fields returned, and the accepted route identifier forms. It does not contradict the annotations and goes beyond the structured metadata.
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?
Four sentences, each with a distinct job: state the return payload, list triggering user intents, route to the alternative tool, and specify the parameter form. The core behavior is front-loaded, and there is no filler or redundant wording.
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?
This is a simple single-parameter read-only tool with a full output schema. The description covers what the tool returns, when to use it, the alternative to prefer, and what input is required. Nothing an agent needs to invoke 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 description coverage is 100%, and the description's parameter note ('route short name ... or numeric external ID') largely repeats the schema's own description. The description adds no new meaning about the parameter beyond what the input schema already provides, so the baseline 3 is appropriate.
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 action and resource: 'Returns every vehicle currently running on a route' and enumerates the output fields (position, destination, next stop with ETA). It also distinguishes itself from get_stop_realtime by naming the sibling and the condition for preferring it, so an agent can select it correctly without inspecting schemas.
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?
The description gives explicit use cases: 'where is my tram/bus right now?', counting vehicles, or how far the next one is. It also provides an explicit alternative: 'Prefer get_stop_realtime when the user is at a stop and wants arrival times there.' This is clear when-to-use and when-not-to-use guidance.
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 and weekend). 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 readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond this: the data volume warning for polylines, the static vs realtime distinction, and the fact that only departures from the first stop are included in the timetable. There is no contradiction with annotations.
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 dense but every sentence earns its place: return contents, usage triggers, parameter nuance, and an explicit exclusion pointing to a sibling. It front-loads the most important information before caveats, and no sentence is redundant or 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?
For a tool with only two parameters, a full output schema, and safe read-only/idempotent annotations, the description is complete. It covers what is returned, when to use it, when not to use it, the inclusion condition for the optional parameter, and the accepted input format. An agent has everything needed to select and invoke this tool correctly.
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?
The schema already provides 100% coverage for both parameters, including examples for route_name and a description for include_shapes. The description adds value by explaining when to set include_shapes — only when drawing on a map — and warning that the polylines are large and unnecessary for text responses. This is genuinely useful guidance beyond the bare 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 ('Returns static route data') and resource, and enumerates the exact contents returned: stop list, direction, timetable, vehicle type, colour. It explicitly differentiates itself from the sibling get_route_realtime by saying this tool is not for live positions. An agent can tell exactly what this tool does without reading the 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?
It gives explicit when-to-use conditions ('Use when the user asks which stops a route serves, where it goes, or its scheduled departure times') and a clear when-not-to-use with a named alternative ('Do NOT use this for live vehicle positions — use get_route_realtime instead'). It also gives conditional guidance for include_shapes, which is a parameter-triggered usage rule. This is strong, actionable routing guidance.
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. |
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=true and idempotentHint=true, covering the safety profile. The description adds the 'live' nature of the data and the inclusion of vehicle positions, which goes beyond the annotations. It does not contradict them. The bar is lowered by annotations, and the description provides relevant extra context without redundancy.
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?
Two sentences: the first front-loads the core purpose and return contents, the second gives usage routing and input requirement. No fluff, every sentence earns its place. Structure is optimal.
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 single-parameter tool with an output schema and annotations covering safety, the description covers purpose, when to use, alternatives, and required input. Nothing an agent needs to call it correctly is missing; the output schema handles return details.
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%, with a detailed description of stop_id (type, example, and accepted string form). The description only repeats that it is numeric and shown on signage, which is already in the schema. No additional meaning is added, so the 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?
The description states a specific verb ('Returns live arrivals') with a clear resource (stop) and enumerates the returned fields (route, destination, vehicle type, minutes, position). It explicitly distinguishes itself from siblings by positioning itself as the default for arrivals at a specific stop and naming alternatives, so an agent can select it without confusion.
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?
The description gives explicit when-to-use guidance ('default tool when the user asks about arrivals, departures, or the next bus/tram at a specific stop') and when-not-to-use guidance (use search_stops for names, get_stops_around_location for coordinates). This leaves no ambiguity about selection.
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=true and idempotentHint=true, lowering the burden. The description adds useful behavioral context beyond annotations: it specifies the default radius, the adjustable range, and that the result includes walking distance and routes. This clarifies the tool's operational envelope without contradicting the annotations.
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 with no fluff: the first defines the action and output, the second gives routing logic and alternatives, the third gives parameter tuning. Critical information is front-loadedable and every sentence earns its place.
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 read-only geographic lookup tool with a rich output schema and full parameter documentation, the description covers the purpose, return contents, usage conditions, sibling differentiation, and radius parameter guidance. Nothing an agent needs to make an informed 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 schema already documents all three parameters. The description adds extra value by explaining how to set radius_meters contextually (narrow for dense urban, widen for rural), which goes beyond the schema's bare description. This extra guidance justifies a score above the baseline 3.
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 uses a specific verb ('Finds stops near a geographic point') and clearly states the return fields (numeric ID, name, coordinates, walking distance, routes). It also distinguishes itself from search_stops by specifying the search-by-location vs search-by-name distinction, so an agent can select the correct sibling without ambiguity.
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 explicitly states when to use this tool ('first step when the user gives an address or coordinates and you need stop IDs for get_stop_realtime or find_routes_between') and when not to ('Use search_stops instead when the user gives a stop name'). It also gives concrete radius tuning advice for dense urban versus rural areas, leaving no coverage gaps.
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 establish readOnlyHint=true and idempotentHint=true; the description is consistent and adds behavioral context by enumerating the returned data (position, route, destination, license plate, upcoming stops with ETAs) and stating that vehicle IDs must come from other listed tools. It doesn't contradict the annotations, and the gaps (e.g., invalid ID behavior) are minor given an output schema exists.
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?
Four sentences, each with a distinct purpose: return summary, usage trigger, ID source, and explicit alternative. The information is front-loaded 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?
All guidance needed to select and call the tool is present: when to use, what it returns, where IDs come from, and the ID proto. Given one required parameter, read-only/idempotent annotations, and an output schema, nothing essential 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%: the schema already documents vehicle_id with the same source note in its own description. The tool description repeats that provenance but adds no new syntax, format, or value constraints, so the 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?
Description states a specific verb, resource, and result: 'Returns details for one vehicle by ID' with the exact fields (position, route, destination, license plate, upcoming stops). It explicitly distinguishes itself from get_route_realtime ('Do NOT use this to get all vehicles on a route'), so an agent can tell siblings apart.
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 use case: 'Use when the user wants to follow a particular vehicle, e.g. "where does this tram go next?"' plus examples. It also provides an exclusion and names the alternative: 'Do NOT use this to get all vehicles on a route — use get_route_realtime instead.'
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 mark the tool as read-only and idempotent, so safety context is covered. The description adds valuable behavioral nuance: case-insensitive partial matching, that one name usually covers both sides of the street under different IDs, and that the routes list disambiguates them. This goes beyond the structured metadata.
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?
Four sentences, all high-value and front-loaded: primary behavior, clear usage instruction, edge-case warning, and a direct alternative. No filler or repetition of schema details.
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?
Given the annotations, output schema, and schema descriptions, the description covers everything needed to invoke the tool correctly. It explains when to use it, what it returns, how to interpret ambiguous results, and which sibling to prefer in a different scenario.
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. The description adds meaning beyond the schema by clarifying that the query supports Ukrainian and English transliteration and case-insensitive partial matching. It also provides realistic examples in both languages, strengthening an agent's ability to form valid queries.
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 names a specific verb and resource: 'Finds stops by name' and specifies matching behavior (Ukrainian/English, case-insensitive, partial match) plus the returned data (ID, coordinates, routes). It explicitly distinguishes itself from the sibling get_stops_around_location, making selection unambiguous.
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 tells the agent exactly when to use this tool: as the first step when the user names a stop and a stop ID is needed for get_stop_realtime or find_routes_between. It also states the alternative condition: use get_stops_around_location when coordinates are available instead of 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
- Added
find_routes_between - Changed
get_nearby_vehicles16 fields changed- changed
Input schema / properties / latitude / descriptionPrevious value: -"Decimal latitude of the centre point, WGS84 (e.g. 49.842)."New value: +"Decimal latitude of the centre point, WGS84 (e.g. 49.842 for central Lviv)." - added
Input schema / properties / limitAdded value: +{ + "description": "Maximum vehicles to return, nearest first (1–50, default 15). `total` reports how many were in range.", + "maximum": 50, + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / longitude / descriptionPrevious value: -"Decimal longitude of the centre point, WGS84 (e.g. 24.031)."New value: +"Decimal longitude of the centre point, WGS84 (e.g. 24.031 for central Lviv)." - added
Input schema / properties / radius_metersAdded value: +{ + "description": "Search radius in metres (100–1000, default 500).", + "maximum": 1000, + "minimum": 100, + "type": "integer" +} - added
Input schema / properties / routeAdded value: +{ + "description": "Only vehicles on this route, by short name (e.g. \"Т30\", \"А1\"). Omit for all routes.", + "minLength": 1, + "type": "string" +} - added
Output schema / properties / data / properties / radius_metersAdded value: +{ + "type": "number" +} - added
Output schema / properties / data / properties / totalAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / data / properties / vehicles / items / properties / destinationAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / data / properties / vehicles / items / properties / directionAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / data / properties / vehicles / items / properties / distance_metersAdded value: +{ + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / data / properties / vehicles / items / properties / id / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / data / properties / vehicles / items / requiredPrevious value: -[ - "id", - "route", - "vehicle_type", - "lat", - "lng", - "bearing", - "lowfloor" -]New value: +[ + "id", + "route", + "vehicle_type", + "direction", + "destination", + "lat", + "lng", + "bearing", + "lowfloor", + "distance_meters" +] - changed
Output schema / properties / data / requiredPrevious value: -[ - "center_lat", - "center_lng", - "vehicles", - "updated_at" -]New value: +[ + "center_lat", + "center_lng", + "radius_meters", + "total", + "vehicles", + "updated_at" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / layersAdded value: +{ + "additionalProperties": false, + "properties": { + "polylines": { + "type": "string" + }, + "stops": { + "type": "string" + }, + "vehicles": { + "type": "string" + } + }, + "type": "object" +} - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehiclesRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "bearing": { - "type": [ - "number", - "null" - ] - }, - "eta_minutes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "eta_status": { - "enum": [ - "assigned", - "unassigned" - ], - "type": "string" - }, - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "next_stop_id": { - "type": [ - "string", - "null" - ] - }, - "route": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "route", - "lat", - "lng", - "bearing", - "next_stop_id", - "eta_minutes", - "eta_status" - ], - "type": "object" - }, - "type": "array" -} - changed
Output schema / properties / ui_blocks / items / properties / data / requiredPrevious value: -[ - "center", - "zoom", - "vehicles" -]New value: +[ + "center", + "zoom", + "layers" +]
- Changed
get_route_realtime8 fields changed- added
Output schema / properties / data / properties / destinationsAdded value: +{ + "items": { + "type": [ + "string", + "null" + ] + }, + "type": "array" +} - added
Output schema / properties / data / properties / vehicles / items / properties / destinationAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / data / properties / vehicles / items / properties / next_stopAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "arrival": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "arrival" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / data / properties / vehicles / items / requiredPrevious value: -[ - "id", - "direction", - "lat", - "lng", - "bearing", - "lowfloor" -]New value: +[ + "id", + "direction", + "destination", + "next_stop", + "lat", + "lng", + "bearing", + "lowfloor" +] - changed
Output schema / properties / data / requiredPrevious value: -[ - "route_name", - "vehicles", - "updated_at" -]New value: +[ + "route_name", + "destinations", + "vehicles", + "updated_at" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / layersAdded value: +{ + "additionalProperties": false, + "properties": { + "polylines": { + "type": "string" + }, + "stops": { + "type": "string" + }, + "vehicles": { + "type": "string" + } + }, + "type": "object" +} - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehiclesRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "bearing": { - "type": [ - "number", - "null" - ] - }, - "direction": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "lowfloor": { - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "id", - "direction", - "lat", - "lng", - "bearing", - "lowfloor" - ], - "type": "object" - }, - "type": "array" -} - changed
Output schema / properties / ui_blocks / items / properties / data / requiredPrevious value: -[ - "center", - "zoom", - "vehicles" -]New value: +[ + "center", + "zoom", + "layers" +]
- Changed
get_route_static7 fields changed- added
Input schema / properties / include_shapesAdded value: +{ + "description": "Include route polylines ([lat, lng] points per direction) for map drawing. Default false.", + "type": "boolean" +} - changed
Output schema / properties / data / requiredPrevious value: -[ - "route", - "stops", - "shapes", - "updated_at" -]New value: +[ + "route", + "stops", + "updated_at" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / layersAdded value: +{ + "additionalProperties": false, + "properties": { + "polylines": { + "type": "string" + }, + "stops": { + "type": "string" + }, + "vehicles": { + "type": "string" + } + }, + "type": "object" +} - removed
Output schema / properties / ui_blocks / items / properties / data / properties / polylinesRemoved value: -{ - "items": { - "items": { - "items": { - "type": "number" - }, - "type": "array" - }, - "type": "array" - }, - "type": "array" -} - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stopsRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "name", - "lat", - "lng" - ], - "type": "object" - }, - "type": "array" -} - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehiclesRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "bearing": { - "type": [ - "number", - "null" - ] - }, - "eta_minutes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "eta_status": { - "enum": [ - "assigned", - "unassigned" - ], - "type": "string" - }, - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "next_stop_id": { - "type": [ - "string", - "null" - ] - }, - "route": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "route", - "lat", - "lng", - "bearing", - "next_stop_id", - "eta_minutes", - "eta_status" - ], - "type": "object" - }, - "type": "array" -} - changed
Output schema / properties / ui_blocks / items / properties / data / requiredPrevious value: -[ - "center", - "zoom", - "polylines", - "stops", - "vehicles" -]New value: +[ + "center", + "zoom", + "layers" +]
- Removed
get_stop_geometry - Changed
get_stop_realtime1 field changed- 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" - }, - "stop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "name", - "lat", - "lng" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "vehicles": { - "items": { - "additionalProperties": false, - "properties": { - "bearing": { - "type": [ - "number", - "null" - ] - }, - "eta_minutes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "eta_status": { - "enum": [ - "assigned", - "unassigned" - ], - "type": "string" - }, - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "next_stop_id": { - "type": [ - "string", - "null" - ] - }, - "route": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "route", - "lat", - "lng", - "bearing", - "next_stop_id", - "eta_minutes", - "eta_status" - ], - "type": "object" - }, - "type": "array" - }, - "zoom": { - "type": "number" - } - }, - "required": [ - "center", - "zoom", - "stop", - "vehicles" - ], - "type": "object" - }, - "type": { - "const": "map", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "arrivals": { - "items": { - "additionalProperties": false, - "properties": { - "arrival_minutes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "bearing": { - "type": [ - "number", - "null" - ] - }, - "direction": { - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "route": { - "type": [ - "string", - "null" - ] - }, - "vehicle_id": { - "type": [ - "string", - "null" - ] - }, - "vehicle_type": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "route", - "direction", - "vehicle_type", - "arrival_minutes", - "vehicle_id", - "lat", - "lng", - "bearing" - ], - "type": "object" - }, - "type": "array" - }, - "stop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "name", - "lat", - "lng" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "stop", - "arrivals" - ], - "type": "object" - }, - "type": { - "const": "arrival_list", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" - } -]New 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" + } +]
- Changed
get_stops_around_location6 fields changed- added
Output schema / properties / data / properties / stops / items / properties / routesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / data / properties / stops / items / requiredPrevious value: -[ - "id", - "name", - "lat", - "lng", - "distance_meters" -]New value: +[ + "id", + "name", + "lat", + "lng", + "routes", + "distance_meters" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / layersAdded value: +{ + "additionalProperties": false, + "properties": { + "polylines": { + "type": "string" + }, + "stops": { + "type": "string" + }, + "vehicles": { + "type": "string" + } + }, + "type": "object" +} - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stopsRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "distance_meters": { - "type": [ - "number", - "null" - ] - }, - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "name", - "lat", - "lng", - "distance_meters" - ], - "type": "object" - }, - "type": "array" -} - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehiclesRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "bearing": { - "type": [ - "number", - "null" - ] - }, - "eta_minutes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "eta_status": { - "enum": [ - "assigned", - "unassigned" - ], - "type": "string" - }, - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "next_stop_id": { - "type": [ - "string", - "null" - ] - }, - "route": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "route", - "lat", - "lng", - "bearing", - "next_stop_id", - "eta_minutes", - "eta_status" - ], - "type": "object" - }, - "type": "array" -} - changed
Output schema / properties / ui_blocks / items / properties / data / requiredPrevious value: -[ - "center", - "zoom", - "stops", - "vehicles" -]New value: +[ + "center", + "zoom", + "layers" +]
- Changed
get_vehicle_info9 fields changed- added
Output schema / properties / data / properties / destinationAdded value: +{ + "type": [ + "string", + "null" + ] +} - removed
Output schema / properties / data / properties / upcoming_stops / items / properties / codeRemoved value: -{ - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" -} - added
Output schema / properties / data / properties / upcoming_stops / items / properties / idAdded value: +{ + "type": "string" +} - added
Output schema / properties / data / properties / upcoming_stops / items / properties / nameAdded value: +{ + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / data / properties / upcoming_stops / items / requiredPrevious value: -[ - "code", - "arrival", - "departure" -]New value: +[ + "id", + "name", + "arrival", + "departure" +] - changed
Output schema / properties / data / requiredPrevious value: -[ - "vehicle_id", - "route", - "license_plate", - "lat", - "lng", - "bearing", - "direction", - "upcoming_stops", - "updated_at" -]New value: +[ + "vehicle_id", + "route", + "license_plate", + "lat", + "lng", + "bearing", + "direction", + "destination", + "upcoming_stops", + "updated_at" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / layersAdded value: +{ + "additionalProperties": false, + "properties": { + "polylines": { + "type": "string" + }, + "stops": { + "type": "string" + }, + "vehicles": { + "type": "string" + } + }, + "type": "object" +} - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehiclesRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "bearing": { - "type": [ - "number", - "null" - ] - }, - "eta_minutes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "eta_status": { - "enum": [ - "assigned", - "unassigned" - ], - "type": "string" - }, - "id": { - "type": "string" - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "next_stop_id": { - "type": [ - "string", - "null" - ] - }, - "route": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "route", - "lat", - "lng", - "bearing", - "next_stop_id", - "eta_minutes", - "eta_status" - ], - "type": "object" - }, - "type": "array" -} - changed
Output schema / properties / ui_blocks / items / properties / data / requiredPrevious value: -[ - "center", - "zoom", - "vehicles" -]New value: +[ + "center", + "zoom", + "layers" +]
- Added
search_stops
7 tool updates
- Changed
get_nearby_vehicles30 fields changed- removed
Output schema / properties / data / properties / center_lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / center_lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / center_lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / center_lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / lowfloor / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / lowfloor / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / route / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / route / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / vehicle_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / vehicle_type / typeAdded value: +[ + "string", + "null" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsAdded value: +false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } -]New value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / maxItemsAdded value: +2 - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / minItemsAdded value: +2 - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / typeAdded value: +[ + "string", + "null" +]
- Changed
get_route_realtime20 fields changed- removed
Output schema / properties / data / properties / vehicles / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / vehicles / items / properties / lowfloor / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / vehicles / items / properties / lowfloor / typeAdded value: +[ + "boolean", + "null" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsAdded value: +false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } -]New value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / maxItemsAdded value: +2 - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / minItemsAdded value: +2 - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lowfloor / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lowfloor / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_route_static34 fields changed- removed
Output schema / properties / data / properties / route / properties / color / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / route / properties / color / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / route / properties / long_name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / route / properties / long_name / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / route / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / route / properties / name / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / route / properties / type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / route / properties / type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / stops / items / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stops / items / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stops / items / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stops / items / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stops / items / items / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stops / items / items / properties / name / typeAdded value: +[ + "string", + "null" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsAdded value: +false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } -]New value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / maxItemsAdded value: +2 - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / minItemsAdded value: +2 - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / name / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / typeAdded value: +[ + "string", + "null" +]
- Changed
get_stop_geometry21 fields changed- removed
Output schema / properties / data / properties / stop / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stop / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stop / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stop / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stop / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stop / properties / name / typeAdded value: +[ + "string", + "null" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsAdded value: +false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } -]New value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / maxItemsAdded value: +2 - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / minItemsAdded value: +2 - changed
Output schema / properties / ui_blocks / items / properties / data / properties / stop / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "lat": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "lng": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "name", - "lat", - "lng" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lng": { + "type": [ + "number", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / typeAdded value: +[ + "string", + "null" +]
- Changed
get_stop_realtime21 fields changed- removed
Output schema / properties / data / properties / arrivals / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / arrivals / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / arrivals / items / properties / direction / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / arrivals / items / properties / direction / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / arrivals / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / arrivals / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / arrivals / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / arrivals / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / arrivals / items / properties / route / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / arrivals / items / properties / route / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / arrivals / items / properties / vehicle_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / arrivals / items / properties / vehicle_id / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / arrivals / items / properties / vehicle_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / arrivals / items / properties / vehicle_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / stop / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stop / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stop / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stop / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stop / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stop / properties / name / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / ui_blocks / items / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "center": { - "items": [ - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - ], - "type": "array" - }, - "stop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "lat": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "lng": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "name", - "lat", - "lng" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "vehicles": { - "items": { - "additionalProperties": false, - "properties": { - "bearing": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "eta_minutes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "eta_status": { - "enum": [ - "assigned", - "unassigned" - ], - "type": "string" - }, - "id": { - "type": "string" - }, - "lat": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "lng": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "next_stop_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "route": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "route", - "lat", - "lng", - "bearing", - "next_stop_id", - "eta_minutes", - "eta_status" - ], - "type": "object" - }, - "type": "array" - }, - "zoom": { - "type": "number" - } - }, - "required": [ - "center", - "zoom", - "stop", - "vehicles" - ], - "type": "object" - }, - "type": { - "const": "map", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "arrivals": { - "items": { - "additionalProperties": false, - "properties": { - "arrival_minutes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "bearing": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "direction": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "lat": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "lng": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "route": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "vehicle_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "vehicle_type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "route", - "direction", - "vehicle_type", - "arrival_minutes", - "vehicle_id", - "lat", - "lng", - "bearing" - ], - "type": "object" - }, - "type": "array" - }, - "stop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "lat": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "lng": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "name", - "lat", - "lng" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "stop", - "arrivals" - ], - "type": "object" - }, - "type": { - "const": "arrival_list", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "center": { + "additionalItems": false, + "items": [ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "stop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lng": { + "type": [ + "number", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "vehicles": { + "items": { + "additionalProperties": false, + "properties": { + "bearing": { + "type": [ + "number", + "null" + ] + }, + "eta_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "eta_status": { + "enum": [ + "assigned", + "unassigned" + ], + "type": "string" + }, + "id": { + "type": "string" + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lng": { + "type": [ + "number", + "null" + ] + }, + "next_stop_id": { + "type": [ + "string", + "null" + ] + }, + "route": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "route", + "lat", + "lng", + "bearing", + "next_stop_id", + "eta_minutes", + "eta_status" + ], + "type": "object" + }, + "type": "array" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "stop", + "vehicles" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "arrivals": { + "items": { + "additionalProperties": false, + "properties": { + "arrival_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "bearing": { + "type": [ + "number", + "null" + ] + }, + "direction": { + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lng": { + "type": [ + "number", + "null" + ] + }, + "route": { + "type": [ + "string", + "null" + ] + }, + "vehicle_id": { + "type": [ + "string", + "null" + ] + }, + "vehicle_type": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "route", + "direction", + "vehicle_type", + "arrival_minutes", + "vehicle_id", + "lat", + "lng", + "bearing" + ], + "type": "object" + }, + "type": "array" + }, + "stop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lng": { + "type": [ + "number", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "stop", + "arrivals" + ], + "type": "object" + }, + "type": { + "const": "arrival_list", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + } +]
- Changed
get_stops_around_location34 fields changed- removed
Output schema / properties / data / properties / center_lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / center_lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / center_lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / center_lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stops / items / properties / distance_meters / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stops / items / properties / distance_meters / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stops / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stops / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stops / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stops / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / stops / items / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / stops / items / properties / name / typeAdded value: +[ + "string", + "null" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsAdded value: +false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } -]New value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / maxItemsAdded value: +2 - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / minItemsAdded value: +2 - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / distance_meters / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / distance_meters / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / name / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / typeAdded value: +[ + "string", + "null" +]
- Changed
get_vehicle_info28 fields changed- removed
Output schema / properties / data / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / license_plate / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / license_plate / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / data / properties / route / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / route / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / upcoming_stops / items / properties / arrival / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / upcoming_stops / items / properties / arrival / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / data / properties / upcoming_stops / items / properties / departure / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / data / properties / upcoming_stops / items / properties / departure / typeAdded value: +[ + "string", + "null" +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / additionalItemsAdded value: +false - changed
Output schema / properties / ui_blocks / items / properties / data / properties / center / itemsPrevious value: -[ - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } -]New value: +[ + { + "type": [ + "number", + "null" + ] + }, + { + "type": [ + "number", + "null" + ] + } +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / maxItemsAdded value: +2 - added
Output schema / properties / ui_blocks / items / properties / data / properties / center / minItemsAdded value: +2 - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / typeAdded value: +[ + "string", + "null" +]
2 tool updates
- Changed
get_stop_geometry4 fields changed- removed
Input schema / properties / stop_id / anyOfRemoved value: -[ - { - "description": "Positive integer stop code (e.g. 707).", - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "description": "Stop code as a digits-only string (e.g. \"707\").", - "pattern": "^\\d+$", - "type": "string" - } -] - added
Input schema / properties / stop_id / exclusiveMinimumAdded value: +0 - added
Input schema / properties / stop_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / stop_id / typeAdded value: +"integer"
- Changed
get_stop_realtime4 fields changed- removed
Input schema / properties / stop_id / anyOfRemoved value: -[ - { - "description": "Positive integer stop code (e.g. 707).", - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "description": "Stop code as a digits-only string (e.g. \"707\").", - "pattern": "^\\d+$", - "type": "string" - } -] - added
Input schema / properties / stop_id / exclusiveMinimumAdded value: +0 - added
Input schema / properties / stop_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / stop_id / typeAdded value: +"integer"
1 tool update
- Removed
plan_trip
1 tool update
- Changed
plan_trip1 field changed- changed
Output schema / properties / ui_blocks / itemsPrevious value: -[]New value: +{ + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "center": { + "items": [ + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + ], + "type": "array" + }, + "stops": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + "type": "array" + }, + "vehicles": { + "items": { + "additionalProperties": false, + "properties": { + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "eta_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "eta_status": { + "enum": [ + "assigned", + "unassigned" + ], + "type": "string" + }, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "next_stop_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "route", + "lat", + "lng", + "bearing", + "next_stop_id", + "eta_minutes", + "eta_status" + ], + "type": "object" + }, + "type": "array" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "stops", + "vehicles" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" +}
1 tool update
- Changed
plan_trip1 field changed- changed
Output schema / properties / ui_blocks / itemsPrevious value: -{ - "additionalProperties": false, - "properties": { - "data": {}, - "type": { - "const": "map", - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "type": "object" -}New value: +[]
1 tool update
- Changed
get_route_static1 field changed- added
Output schema / properties / data / properties / stops / items / items / properties / scheduleAdded value: +{ + "additionalProperties": false, + "properties": { + "weekend": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workday": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "workday", + "weekend" + ], + "type": "object" +}
4 tool updates
- Added
get_nearby_vehicles - Changed
get_route_realtime4 fields changed- added
Output schema / properties / data / properties / vehicles / items / properties / direction / anyOfAdded value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / data / properties / vehicles / items / properties / lowfloor / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / direction / anyOfAdded value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lowfloor / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +]
- Added
get_vehicle_info - Added
plan_trip
5 tool updates
- Changed
get_route_realtime1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "route_name": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "vehicles": { + "items": { + "additionalProperties": false, + "properties": { + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "direction": {}, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lowfloor": {} + }, + "required": [ + "id", + "direction", + "lat", + "lng", + "bearing", + "lowfloor" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "route_name", + "vehicles", + "updated_at" + ], + "type": "object" + }, + "ui_blocks": { + "items": { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "center": { + "items": [ + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + ], + "type": "array" + }, + "vehicles": { + "items": { + "additionalProperties": false, + "properties": { + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "direction": {}, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lowfloor": {} + }, + "required": [ + "id", + "direction", + "lat", + "lng", + "bearing", + "lowfloor" + ], + "type": "object" + }, + "type": "array" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "vehicles" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + }, + "type": "array" + }, + "view": { + "const": "transit_realtime", + "type": "string" + } + }, + "required": [ + "view", + "data", + "ui_blocks" + ], + "type": "object" +}
- Changed
get_route_static1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "route": { + "additionalProperties": false, + "properties": { + "color": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "long_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "name", + "long_name", + "color", + "type" + ], + "type": "object" + }, + "shapes": { + "items": { + "items": { + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + }, + "type": "array" + }, + "stops": { + "items": { + "items": { + "additionalProperties": false, + "properties": { + "departures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng", + "departures" + ], + "type": "object" + }, + "type": "array" + }, + "type": "array" + }, + "updated_at": { + "type": "string" + } + }, + "required": [ + "route", + "stops", + "shapes", + "updated_at" + ], + "type": "object" + }, + "ui_blocks": { + "items": { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "center": { + "items": [ + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + ], + "type": "array" + }, + "polylines": { + "items": { + "items": { + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + }, + "type": "array" + }, + "stops": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + "type": "array" + }, + "vehicles": { + "items": { + "additionalProperties": false, + "properties": { + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "eta_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "eta_status": { + "enum": [ + "assigned", + "unassigned" + ], + "type": "string" + }, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "next_stop_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "route", + "lat", + "lng", + "bearing", + "next_stop_id", + "eta_minutes", + "eta_status" + ], + "type": "object" + }, + "type": "array" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "polylines", + "stops", + "vehicles" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + }, + "type": "array" + }, + "view": { + "const": "transit_realtime", + "type": "string" + } + }, + "required": [ + "view", + "data", + "ui_blocks" + ], + "type": "object" +}
- Changed
get_stop_geometry1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "polyline": { + "items": { + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + }, + "route": { + "type": "string" + } + }, + "required": [ + "route", + "polyline" + ], + "type": "object" + }, + "type": "array" + }, + "stop": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + "updated_at": { + "type": "string" + } + }, + "required": [ + "stop", + "routes", + "updated_at" + ], + "type": "object" + }, + "ui_blocks": { + "items": { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "center": { + "items": [ + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + ], + "type": "array" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "polyline": { + "items": { + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + }, + "route": { + "type": "string" + } + }, + "required": [ + "route", + "polyline" + ], + "type": "object" + }, + "type": "array" + }, + "stop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "vehicles": { + "items": { + "additionalProperties": false, + "properties": { + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "eta_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "eta_status": { + "enum": [ + "assigned", + "unassigned" + ], + "type": "string" + }, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "next_stop_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "route", + "lat", + "lng", + "bearing", + "next_stop_id", + "eta_minutes", + "eta_status" + ], + "type": "object" + }, + "type": "array" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "stop", + "routes", + "vehicles" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + }, + "type": "array" + }, + "view": { + "const": "transit_realtime", + "type": "string" + } + }, + "required": [ + "view", + "data", + "ui_blocks" + ], + "type": "object" +}
- Changed
get_stop_realtime1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "arrivals": { + "items": { + "additionalProperties": false, + "properties": { + "arrival_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "direction": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "vehicle_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "vehicle_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "route", + "direction", + "vehicle_type", + "arrival_minutes", + "vehicle_id", + "lat", + "lng", + "bearing" + ], + "type": "object" + }, + "type": "array" + }, + "stop": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + "updated_at": { + "type": "string" + } + }, + "required": [ + "stop", + "arrivals", + "updated_at" + ], + "type": "object" + }, + "ui_blocks": { + "items": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "center": { + "items": [ + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + ], + "type": "array" + }, + "stop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "vehicles": { + "items": { + "additionalProperties": false, + "properties": { + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "eta_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "eta_status": { + "enum": [ + "assigned", + "unassigned" + ], + "type": "string" + }, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "next_stop_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "route", + "lat", + "lng", + "bearing", + "next_stop_id", + "eta_minutes", + "eta_status" + ], + "type": "object" + }, + "type": "array" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "stop", + "vehicles" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "arrivals": { + "items": { + "additionalProperties": false, + "properties": { + "arrival_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "direction": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "vehicle_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "vehicle_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "route", + "direction", + "vehicle_type", + "arrival_minutes", + "vehicle_id", + "lat", + "lng", + "bearing" + ], + "type": "object" + }, + "type": "array" + }, + "stop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "stop", + "arrivals" + ], + "type": "object" + }, + "type": { + "const": "arrival_list", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + } + ] + }, + "type": "array" + }, + "view": { + "const": "transit_realtime", + "type": "string" + } + }, + "required": [ + "view", + "data", + "ui_blocks" + ], + "type": "object" +}
- Changed
get_stops_around_location1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "center_lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "center_lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "radius_meters": { + "type": "number" + }, + "stops": { + "items": { + "additionalProperties": false, + "properties": { + "distance_meters": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng", + "distance_meters" + ], + "type": "object" + }, + "type": "array" + }, + "updated_at": { + "type": "string" + } + }, + "required": [ + "center_lat", + "center_lng", + "radius_meters", + "stops", + "updated_at" + ], + "type": "object" + }, + "ui_blocks": { + "items": { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "center": { + "items": [ + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + ], + "type": "array" + }, + "stops": { + "items": { + "additionalProperties": false, + "properties": { + "distance_meters": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "name", + "lat", + "lng", + "distance_meters" + ], + "type": "object" + }, + "type": "array" + }, + "vehicles": { + "items": { + "additionalProperties": false, + "properties": { + "bearing": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "eta_minutes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "eta_status": { + "enum": [ + "assigned", + "unassigned" + ], + "type": "string" + }, + "id": { + "type": "string" + }, + "lat": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lng": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "next_stop_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "route", + "lat", + "lng", + "bearing", + "next_stop_id", + "eta_minutes", + "eta_status" + ], + "type": "object" + }, + "type": "array" + }, + "zoom": { + "type": "number" + } + }, + "required": [ + "center", + "zoom", + "stops", + "vehicles" + ], + "type": "object" + }, + "type": { + "const": "map", + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "type": "object" + }, + "type": "array" + }, + "view": { + "const": "transit_realtime", + "type": "string" + } + }, + "required": [ + "view", + "data", + "ui_blocks" + ], + "type": "object" +}
6 tool updates
- Added
get_route_realtime - Added
get_route_static - Changed
get_stop_geometry2 fields changed- changed
Input schema / properties / stop_id / anyOfPrevious value: -[ - { - "description": "Numeric municipal stop code (e.g. 707).", - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "description": "Municipal stop code as digits-only string (e.g. \"707\").", - "pattern": "^\\d+$", - "type": "string" - } -]New value: +[ + { + "description": "Positive integer stop code (e.g. 707).", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "description": "Stop code as a digits-only string (e.g. \"707\").", + "pattern": "^\\d+$", + "type": "string" + } +] - added
Input schema / properties / stop_id / descriptionAdded value: +"Municipal stop code shown on stop signage (e.g. 707). Accepts a positive integer or an equivalent digit-only string."
- Changed
get_stop_realtime2 fields changed- changed
Input schema / properties / stop_id / anyOfPrevious value: -[ - { - "description": "Numeric municipal stop code (e.g. 707).", - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "description": "Municipal stop code as digits-only string (e.g. \"707\").", - "pattern": "^\\d+$", - "type": "string" - } -]New value: +[ + { + "description": "Positive integer stop code (e.g. 707).", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "description": "Stop code as a digits-only string (e.g. \"707\").", + "pattern": "^\\d+$", + "type": "string" + } +] - added
Input schema / properties / stop_id / descriptionAdded value: +"Municipal stop code shown on stop signage (e.g. 707). Accepts a positive integer or an equivalent digit-only string."
- Changed
get_stops_around_location3 fields changed- changed
Input schema / properties / latitude / descriptionPrevious value: -"Center latitude (WGS84)."New value: +"Decimal latitude of the search centre, WGS84 (e.g. 49.842 for central Lviv)." - changed
Input schema / properties / longitude / descriptionPrevious value: -"Center longitude (WGS84)."New value: +"Decimal longitude of the search centre, WGS84 (e.g. 24.031 for central Lviv)." - changed
Input schema / properties / radius_meters / descriptionPrevious value: -"Search radius in meters (default 1000; same cap as the public /closest API)."New value: +"Search radius in metres (50–3000, default 1000). Use ~300 for dense urban intersections, up to 3000 for suburban or rural areas."
- Removed
get_vehicles_by_stop
4 tool updates
- First observed
get_stop_geometry - First observed
get_stop_realtime - First observed
get_stops_around_location - First observed
get_vehicles_by_stop
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
Entur MCP — Norway public transport, nationwide, all modes (developer.entur.org)
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceLive 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.8MIT
- 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.-
- AlicenseAqualityCmaintenanceEnables 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.