Skip to main content
Glama

Server Details

Lviv public transport MCP: stops, timetables, routes, and live vehicle positions. No API key.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.3% over 59 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

A4.6/5.0

Scored across 8 tools

Disambiguation4/5

The live-data tools (get_route_realtime, get_nearby_vehicles, get_stop_realtime, get_vehicle_info) all surface vehicle positions/arrivals and could blur together, but each description explicitly cross-references the others with 'prefer X when...' and 'do NOT use this for...' guidance. Routing, stop lookup, and static data are cleanly separated. Boundaries are clear enough that misselection is unlikely.

Naming Consistency5/5

All names use snake_case with predictable verb prefixes (get_*, find_*, search_*) followed by resource nouns. Qualifiers (realtime/static/info) and the 'between'/'around_location' modifiers are applied consistently and readably. No mixed conventions or vague verbs.

Tool Count5/5

Eight tools is well-scoped for a public transport domain, covering routing, stops, routes, and realtime feeds without redundancy. Each tool earns its place and none feel padded.

Completeness4/5

Strong coverage: journey planning, stop search by name/coordinates, static routes with timetables, and live arrivals/vehicle positions. Minor gaps exist (e.g. no tool to enumerate the whole route network or network-wide alerts), but core workflows are complete with no dead ends.

Available Tools

8 tools
find_routes_betweenFind Routes Between StopsA
Read-onlyIdempotent
Inspect

Lists the routes from one place to another: which stop to board, where to get off, the direction's destination, stops in between, and the walk at each end — best first, walking counted. options are direct routes. transfer_options have exactly one interchange (never more): ride legs[0], walk transfer_walk_meters (within a 300 m stop cluster, 0 when it is the same stop) to legs[1].board_stop, ride legs[1]. They are listed when there is no direct route or when they beat the best direct one. map_stops holds the best trip's stops in riding order, each with a role (board, transfer — or transfer_alight + transfer_board when the interchange is a walk — and alight). Use when the user asks how to get from A to B, 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. Both lists empty means the trip needs two or more transfers. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_stop_idYesStop ID where the trip ends.
from_stop_idYesStop ID where the trip starts.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
viewYes
ui_blocksYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/closed-world safety, yet the description adds substantial behavior: transfer_options are capped at exactly one interchange, they appear only when no direct route exists or they beat the best direct one, empty lists imply two-plus transfers, and the 300 m cluster logic explains same-name/opposite-side stops. This is rich context beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and long, but nearly every clause carries decision-relevant information and the output shape is stated up front. It leans verbose on the map_stops role enumeration, but there is little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even with an output schema present, the description explains the return structure, edge cases (empty lists), the transfer model, and prerequisites, and it routes the agent to sibling tools for setup and follow-up. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the two integer IDs are already documented, giving a baseline of 3. The description adds value by clarifying that each end covers every stop within a 300 m walk and that IDs must be numeric and obtained from other tools, which enriches how the parameter should be chosen.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists the routes from one place to another') and immediately enumerates the returned fields (board stop, alight stop, direction destination, intermediate stops, walk legs) and priority order. An agent can distinguish it from transit siblings like get_route_static or get_stop_realtime without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('the user asks how to get from A to B, or which bus/tram goes from one place to another'), states the precondition ('Requires numeric stop IDs; get them with search_stops or get_stops_around_location first'), and names the follow-up tool (get_stop_realtime). Alternate-path guidance is fully spelled out.

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 VehiclesA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum vehicles to return, nearest first (1–50, default 15). `total` reports how many were in range.
routeNoOnly vehicles on this route, by short name (e.g. "Т30", "А1"). Omit for all routes.
latitudeYesDecimal latitude of the centre point, WGS84 (e.g. 49.842 for central Lviv).
longitudeYesDecimal longitude of the centre point, WGS84 (e.g. 24.031 for central Lviv).
radius_metersNoSearch radius in metres (100–1000, default 500).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
viewYes
ui_blocksYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RealtimeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
route_nameYesRoute short name (e.g. "T30", "32A") or numeric external ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
viewYes
ui_blocksYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 StaticA
Read-onlyIdempotent
Inspect

Returns static route data: name, long name, vehicle type, colour, the ordered stop list for both directions, and the timetable of departures from the first stop (workday, Saturday and Sunday). Use when the user asks which stops a route serves, where it goes, or its scheduled departure times. Set include_shapes only when you will draw the route on a map — the polylines are large and carry nothing a text answer needs. Do NOT use this for live vehicle positions — use get_route_realtime instead. Requires a route short name (e.g. "T30", "32A") or numeric external ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
route_nameYesRoute short name (e.g. "T30", "32A") or numeric external ID.
include_shapesNoInclude route polylines ([lat, lng] points per direction) for map drawing. Default false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
viewYes
ui_blocksYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld=false), so the bar is lower; the description still adds useful behavioral context: include_shapes produces large polylines that are useless for text answers, and the required route identifier format is spelled out. It does not discuss response size limits or error behavior for bad route names, keeping it just short of full disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the payload contents, then usage conditions, then the caution on include_shapes, then the exclusion, ending with the input requirement. Every sentence carries distinct information with no repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return shape need not be re-explained, yet the description still summarizes fields usefully. For a two-parameter read tool with full annotation coverage, an agent has everything needed to select and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by explaining why include_shapes matters (large polylines, nothing a text answer needs) and by giving concrete route-name examples that match the schema pattern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource (static route data) and enumerates exactly what comes back: name, long name, vehicle type, colour, ordered stop list for both directions, and timetable. It explicitly distinguishes itself from the realtime sibling, so an agent can separate the two without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States when to use ("which stops a route serves, where it goes, or its scheduled departure times"), when not to use ("Do NOT use this for live vehicle positions — use get_route_realtime instead"), and conditions the optional parameter ("Set include_shapes only when you will draw the route on a map"). Explicit routing plus an exclusion.

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 RealtimeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_idYesMunicipal stop code shown on stop signage (e.g. 707). Accepts a positive integer or an equivalent digit-only string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
viewYes
ui_blocksYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 LocationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYesDecimal latitude of the search centre, WGS84 (e.g. 49.842 for central Lviv).
longitudeYesDecimal longitude of the search centre, WGS84 (e.g. 24.031 for central Lviv).
radius_metersNoSearch radius in metres (50–3000, default 1000). Use ~300 for dense urban intersections, up to 3000 for suburban or rural areas.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
viewYes
ui_blocksYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 InfoA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicle_idYesVehicle ID as returned by get_route_realtime, get_nearby_vehicles, or get_stop_realtime.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
viewYes
ui_blocksYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 StopsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum stops to return (1–25, default 10).
queryYesStop name or part of it, e.g. "Ринок", "opera", "Стрийська".

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
viewYes
ui_blocksYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 1 tool update
    • Changedfind_routes_between2 fields changed
      • addedOutput schema / properties / data / properties / map_stops
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "lat": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "lng": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "name": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "role": {
        +        "enum": [
        +          "board",
        +          "transfer",
        +          "transfer_alight",
        +          "transfer_board",
        +          "alight"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "lat",
        +      "lng",
        +      "role"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / data / required
        Previous value: -[
        -  "from",
        -  "to",
        -  "options",
        -  "transfer_options",
        -  "updated_at"
        -]New value: +[
        +  "from",
        +  "to",
        +  "options",
        +  "transfer_options",
        +  "map_stops",
        +  "updated_at"
        +]
  2. 1 tool update
    • Changedfind_routes_between2 fields changed
      • addedOutput schema / properties / data / properties / transfer_options
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "legs": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "alight_stop": {
        +              "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"
        +            },
        +            "board_stop": {
        +              "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"
        +            },
        +            "destination": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "direction": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "route": {
        +              "type": "string"
        +            },
        +            "stops_count": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "vehicle_type": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "route",
        +            "vehicle_type",
        +            "direction",
        +            "destination",
        +            "board_stop",
        +            "alight_stop",
        +            "stops_count"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stops_count": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "transfer_walk_meters": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "walk_from_alight_meters": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "walk_to_board_meters": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "legs",
        +      "transfer_walk_meters",
        +      "stops_count",
        +      "walk_to_board_meters",
        +      "walk_from_alight_meters"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / data / required
        Previous value: -[
        -  "from",
        -  "to",
        -  "options",
        -  "updated_at"
        -]New value: +[
        +  "from",
        +  "to",
        +  "options",
        +  "transfer_options",
        +  "updated_at"
        +]
  3. 1 tool update
    • Changedget_route_static3 fields changed
      • addedOutput schema / properties / data / properties / stops / items / items / properties / schedule / properties / saturday
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / data / properties / stops / items / items / properties / schedule / properties / sunday
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / data / properties / stops / items / items / properties / schedule / required
        Previous value: -[
        -  "workday",
        -  "weekend"
        -]New value: +[
        +  "workday",
        +  "saturday",
        +  "sunday",
        +  "weekend"
        +]
  4. 9 tool updates
    • Addedfind_routes_between
    • Changedget_nearby_vehicles16 fields changed
      • changedInput schema / properties / latitude / description
        Previous 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)."
      • addedInput schema / properties / limit
        Added 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"
        +}
      • changedInput schema / properties / longitude / description
        Previous 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)."
      • addedInput schema / properties / radius_meters
        Added value: +{
        +  "description": "Search radius in metres (100–1000, default 500).",
        +  "maximum": 1000,
        +  "minimum": 100,
        +  "type": "integer"
        +}
      • addedInput schema / properties / route
        Added value: +{
        +  "description": "Only vehicles on this route, by short name (e.g. \"Т30\", \"А1\"). Omit for all routes.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / data / properties / radius_meters
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / data / properties / total
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / data / properties / vehicles / items / properties / destination
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / data / properties / vehicles / items / properties / direction
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / data / properties / vehicles / items / properties / distance_meters
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / data / properties / vehicles / items / properties / id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / data / properties / vehicles / items / required
        Previous value: -[
        -  "id",
        -  "route",
        -  "vehicle_type",
        -  "lat",
        -  "lng",
        -  "bearing",
        -  "lowfloor"
        -]New value: +[
        +  "id",
        +  "route",
        +  "vehicle_type",
        +  "direction",
        +  "destination",
        +  "lat",
        +  "lng",
        +  "bearing",
        +  "lowfloor",
        +  "distance_meters"
        +]
      • changedOutput schema / properties / data / required
        Previous value: -[
        -  "center_lat",
        -  "center_lng",
        -  "vehicles",
        -  "updated_at"
        -]New value: +[
        +  "center_lat",
        +  "center_lng",
        +  "radius_meters",
        +  "total",
        +  "vehicles",
        +  "updated_at"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / layers
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "polylines": {
        +      "type": "string"
        +    },
        +    "stops": {
        +      "type": "string"
        +    },
        +    "vehicles": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles
        Removed 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"
        -}
      • changedOutput schema / properties / ui_blocks / items / properties / data / required
        Previous value: -[
        -  "center",
        -  "zoom",
        -  "vehicles"
        -]New value: +[
        +  "center",
        +  "zoom",
        +  "layers"
        +]
    • Changedget_route_realtime8 fields changed
      • addedOutput schema / properties / data / properties / destinations
        Added value: +{
        +  "items": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / data / properties / vehicles / items / properties / destination
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / data / properties / vehicles / items / properties / next_stop
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "arrival": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "arrival"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / data / properties / vehicles / items / required
        Previous value: -[
        -  "id",
        -  "direction",
        -  "lat",
        -  "lng",
        -  "bearing",
        -  "lowfloor"
        -]New value: +[
        +  "id",
        +  "direction",
        +  "destination",
        +  "next_stop",
        +  "lat",
        +  "lng",
        +  "bearing",
        +  "lowfloor"
        +]
      • changedOutput schema / properties / data / required
        Previous value: -[
        -  "route_name",
        -  "vehicles",
        -  "updated_at"
        -]New value: +[
        +  "route_name",
        +  "destinations",
        +  "vehicles",
        +  "updated_at"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / layers
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "polylines": {
        +      "type": "string"
        +    },
        +    "stops": {
        +      "type": "string"
        +    },
        +    "vehicles": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles
        Removed 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"
        -}
      • changedOutput schema / properties / ui_blocks / items / properties / data / required
        Previous value: -[
        -  "center",
        -  "zoom",
        -  "vehicles"
        -]New value: +[
        +  "center",
        +  "zoom",
        +  "layers"
        +]
    • Changedget_route_static7 fields changed
      • addedInput schema / properties / include_shapes
        Added value: +{
        +  "description": "Include route polylines ([lat, lng] points per direction) for map drawing. Default false.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / data / required
        Previous value: -[
        -  "route",
        -  "stops",
        -  "shapes",
        -  "updated_at"
        -]New value: +[
        +  "route",
        +  "stops",
        +  "updated_at"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / layers
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "polylines": {
        +      "type": "string"
        +    },
        +    "stops": {
        +      "type": "string"
        +    },
        +    "vehicles": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / polylines
        Removed value: -{
        -  "items": {
        -    "items": {
        -      "items": {
        -        "type": "number"
        -      },
        -      "type": "array"
        -    },
        -    "type": "array"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops
        Removed 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"
        -}
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles
        Removed 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"
        -}
      • changedOutput schema / properties / ui_blocks / items / properties / data / required
        Previous value: -[
        -  "center",
        -  "zoom",
        -  "polylines",
        -  "stops",
        -  "vehicles"
        -]New value: +[
        +  "center",
        +  "zoom",
        +  "layers"
        +]
    • Removedget_stop_geometry
    • Changedget_stop_realtime1 field changed
      • changedOutput schema / properties / ui_blocks / items / oneOf
        Previous 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"
        +  }
        +]
    • Changedget_stops_around_location6 fields changed
      • addedOutput schema / properties / data / properties / stops / items / properties / routes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / data / properties / stops / items / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "lat",
        -  "lng",
        -  "distance_meters"
        -]New value: +[
        +  "id",
        +  "name",
        +  "lat",
        +  "lng",
        +  "routes",
        +  "distance_meters"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / layers
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "polylines": {
        +      "type": "string"
        +    },
        +    "stops": {
        +      "type": "string"
        +    },
        +    "vehicles": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops
        Removed 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"
        -}
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles
        Removed 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"
        -}
      • changedOutput schema / properties / ui_blocks / items / properties / data / required
        Previous value: -[
        -  "center",
        -  "zoom",
        -  "stops",
        -  "vehicles"
        -]New value: +[
        +  "center",
        +  "zoom",
        +  "layers"
        +]
    • Changedget_vehicle_info9 fields changed
      • addedOutput schema / properties / data / properties / destination
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / data / properties / upcoming_stops / items / properties / code
        Removed value: -{
        -  "maximum": 9007199254740991,
        -  "minimum": -9007199254740991,
        -  "type": "integer"
        -}
      • addedOutput schema / properties / data / properties / upcoming_stops / items / properties / id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / data / properties / upcoming_stops / items / properties / name
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / data / properties / upcoming_stops / items / required
        Previous value: -[
        -  "code",
        -  "arrival",
        -  "departure"
        -]New value: +[
        +  "id",
        +  "name",
        +  "arrival",
        +  "departure"
        +]
      • changedOutput schema / properties / data / required
        Previous 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"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / layers
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "polylines": {
        +      "type": "string"
        +    },
        +    "stops": {
        +      "type": "string"
        +    },
        +    "vehicles": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles
        Removed 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"
        -}
      • changedOutput schema / properties / ui_blocks / items / properties / data / required
        Previous value: -[
        -  "center",
        -  "zoom",
        -  "vehicles"
        -]New value: +[
        +  "center",
        +  "zoom",
        +  "layers"
        +]
    • Addedsearch_stops
  5. 7 tool updates
    • Changedget_nearby_vehicles30 fields changed
      • removedOutput schema / properties / data / properties / center_lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / center_lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / center_lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / center_lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / route / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / route / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / vehicle_type / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / vehicle_type / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
        Added value: +false
      • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / maxItems
        Added value: +2
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / minItems
        Added value: +2
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_route_realtime20 fields changed
      • removedOutput schema / properties / data / properties / vehicles / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
        Added value: +false
      • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / maxItems
        Added value: +2
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / minItems
        Added value: +2
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lowfloor / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lowfloor / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
    • Changedget_route_static34 fields changed
      • removedOutput schema / properties / data / properties / route / properties / color / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / route / properties / color / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / route / properties / long_name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / route / properties / long_name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / route / properties / name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / route / properties / name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / route / properties / type / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / route / properties / type / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stops / items / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stops / items / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stops / items / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stops / items / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stops / items / items / properties / name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stops / items / items / properties / name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
        Added value: +false
      • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / maxItems
        Added value: +2
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / minItems
        Added value: +2
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_stop_geometry21 fields changed
      • removedOutput schema / properties / data / properties / stop / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stop / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stop / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stop / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stop / properties / name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stop / properties / name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
        Added value: +false
      • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / maxItems
        Added value: +2
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / minItems
        Added value: +2
      • changedOutput schema / properties / ui_blocks / items / properties / data / properties / stop / anyOf
        Previous 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"
        +  }
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_stop_realtime21 fields changed
      • removedOutput schema / properties / data / properties / arrivals / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / arrivals / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / arrivals / items / properties / direction / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / arrivals / items / properties / direction / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / arrivals / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / arrivals / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / arrivals / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / arrivals / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / arrivals / items / properties / route / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / arrivals / items / properties / route / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / arrivals / items / properties / vehicle_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / arrivals / items / properties / vehicle_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / arrivals / items / properties / vehicle_type / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / arrivals / items / properties / vehicle_type / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stop / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stop / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stop / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stop / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stop / properties / name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stop / properties / name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / ui_blocks / items / oneOf
        Previous 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"
        +  }
        +]
    • Changedget_stops_around_location34 fields changed
      • removedOutput schema / properties / data / properties / center_lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / center_lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / center_lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / center_lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stops / items / properties / distance_meters / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stops / items / properties / distance_meters / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stops / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stops / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stops / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stops / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / stops / items / properties / name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / stops / items / properties / name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
        Added value: +false
      • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / maxItems
        Added value: +2
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / minItems
        Added value: +2
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / distance_meters / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / distance_meters / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / stops / items / properties / name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_vehicle_info28 fields changed
      • removedOutput schema / properties / data / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / license_plate / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / license_plate / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / route / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / route / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / upcoming_stops / items / properties / arrival / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / upcoming_stops / items / properties / arrival / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / data / properties / upcoming_stops / items / properties / departure / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / data / properties / upcoming_stops / items / properties / departure / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
        Added value: +false
      • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / maxItems
        Added value: +2
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / minItems
        Added value: +2
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / type
        Added value: +[
        +  "string",
        +  "null"
        +]
  6. 2 tool updates
    • Changedget_stop_geometry4 fields changed
      • removedInput schema / properties / stop_id / anyOf
        Removed 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"
        -  }
        -]
      • addedInput schema / properties / stop_id / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / stop_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / stop_id / type
        Added value: +"integer"
    • Changedget_stop_realtime4 fields changed
      • removedInput schema / properties / stop_id / anyOf
        Removed 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"
        -  }
        -]
      • addedInput schema / properties / stop_id / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / stop_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / stop_id / type
        Added value: +"integer"
  7. 1 tool update
    • Removedplan_trip
  8. 1 tool update
    • Changedplan_trip1 field changed
      • changedOutput schema / properties / ui_blocks / items
        Previous 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"
        +}
  9. 1 tool update
    • Changedplan_trip1 field changed
      • changedOutput schema / properties / ui_blocks / items
        Previous value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "data": {},
        -    "type": {
        -      "const": "map",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "data"
        -  ],
        -  "type": "object"
        -}New value: +[]

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.