Skip to main content
Glama

Server Details

Trips, departures, alerts and vehicles for NYC, DC and the SF Bay Area.

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
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Aarekaz/transit-mcp
GitHub Stars
5
Server Listing
Metro MCP
ChatGPT
–
Claude
–

TDQS

A3.6/5.0

Scored across 18 tools

Disambiguation3/5

Several overlaps exist: get_station_predictions vs get_departures (both surface upcoming arrivals), get_train_positions vs get_vehicle_status (both report observed trains), and get_elevator_incidents vs get_service_status equipment output (both report outages). Descriptions are unusually thorough and do explain the intended boundaries (real-time rail only vs schedule-window departures, DC-wide vs scoped vehicle queries), but an agent can still plausibly pick the wrong one.

Naming Consistency4/5

All names are snake_case and follow a verb_noun pattern (get_, find_, search_, plan_), which is highly predictable. Minor wobble in resource nouns: the same concept appears as 'train' in get_train_positions but 'vehicle' in get_vehicle_status, and 'station' ops use both search_ and find_transit.

Tool Count3/5

18 tools is in the heavy range, and a few are redundant rather than additive (get_train_positions is largely subsumed by get_vehicle_status; get_elevator_incidents by get_service_status equipment). The breadth of multimodal, multi-agency coverage justifies many tools, but the surface is inflated by agency-specific specials.

Completeness4/5

Strong lifecycle coverage for read-only transit: name resolution, station/line/route discovery, real-time arrivals and vehicle positions, departures, journey planning with accessibility, and disruption reporting. Minor gaps: no general listing of NYC subway routes/lines (route info is single-route and NYC-only), and no fare or saved-trip operations, though agents can work around these via find_transit and plan_trip.

Available Tools

18 tools
find_transitFind transit entitiesA
Read-onlyIdempotent
Inspect

Call with no arguments (or only coverage) to list the regions served and what each supports. Without a coverage, a name is searched in every region. If nothing matches, suggestions lists the closest names (not matches). Resolve a coverage, agency, route, station, stop, or a currently observed train number (where vehicle data exists); inspect an exact reference or nearby coordinates. Context ranks candidates without selecting identity. Candidates come best first (exact names and well-known place names such as SFO, then stations, then rail before bus), and each stop says what it is: stopType (station, platform or street stop), modes and the lines serving it, so you can pick the one the rider means. No general address geocoding. Use plan_trip for journeys.

NameRequiredDescriptionDefault
refNoExact reference to inspect.
limitNo
queryNoA name to search: station, stop, line, agency or train number.
contextNo
coverageNoRegion: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.
latitudeNoWith longitude: stops near this point.
longitudeNo

Output Schema

NameRequiredDescription
asOfYes
statusYes
reasonsYes
sourcesYes
entitiesYes
coveragesYes
candidatesYes
attributionYes
suggestionsNoWhen no name matches: the closest stop names, not matches. Confirm one with the rider, or retry with the official station name.
clientCoordinatesYes

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds substantial behavior beyond them: result ordering (exact names and well-known place names first, then stations, then rail before bus), the fact that suggestions are closest names rather than matches, that context only ranks without selecting identity, and what each stop result carries (stopType, modes, lines). That is exactly the disambiguation an agent needs for a search tool.

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?

It front-loads the no-argument listing behavior before the search semantics, which is the right order. Sentences are dense and a few constructions are awkward ('Context ranks candidates without selecting identity', 'Candidates come best first'), but nearly every clause adds usable information rather than restating the schema.

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

Completeness4/5

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

For a 7-parameter, nested, open-world search tool with an output schema, this covers the hard parts: coverage selection, cross-region fallback, suggestion semantics, ranking, and result fields. Only pagination/limit behavior and the serviceDate concept are left uncovered, which are minor relative to what is explained.

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 57%, so several parameters (limit, longitude, context.feed, context.serviceDate) carry no description. The prose compensates well for the important ones: it explains the coverage enum semantics, what ref and query each mean behaviorally, how context ranks, and that lat/long must be paired. `limit` and the sorting implications remain unexplained in both places.

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

Purpose4/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 family: resolve/search coverage, agency, route, station, stop, or train number, plus inspect by exact ref or coordinates. It distinguishes itself from plan_trip and explicitly excludes address geocoding, so an agent can tell it apart from search_stations and the get_* siblings. The opening sentence is somewhat dense, but the scope is unambiguous.

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

Usage Guidelines4/5

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

It gives concrete when-to-use guidance: call with no arguments to list regions, omit coverage to search all regions, use ref for exact inspection, use lat/long for nearby stops, and use plan_trip for journeys. It does not hand off to search_stations or get_stations_by_line explicitly, so routing against the closest siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_stationsAll stationsA
Read-onlyIdempotent
Inspect

Get the complete list of transit stations with coordinates for one city. Large result; prefer search_stations or get_stations_by_line when looking for specific stations.

NameRequiredDescriptionDefault
cityYes

Output Schema

NameRequiredDescription
cityYes
stationsYes
totalStationsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false) and openWorldHint, so the description's burden is lighter. It adds a meaningful non-structured trait — that the result set is large — which is exactly the behavioral context that steers tool selection. It stops short of quantifying size or noting any pagination/rate limits.

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, zero filler, with the primary purpose front-loaded and the disambiguation immediately after. Every clause 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?

An output schema exists, so return-value detail is unnecessary, and annotations carry the safety profile. Scope, result size, and sibling routing are all covered; nothing needed to select or invoke the tool 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 0%, but there is only one parameter and its enum values (dc, nyc) are self-explanatory in the schema. The phrase 'for one city' confirms the city scopes the result, adding modest meaning without describing the enum or any constraints.

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 and resource ('Get the complete list of transit stations') plus scope ('with coordinates for one city'), so the agent knows exactly what comes back. It also names two siblings (search_stations, get_stations_by_line) as the targeted alternatives, cleanly separating this bulk-list tool from them.

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?

Explicit routing guidance: 'Large result; prefer search_stations or get_stations_by_line when looking for specific stations.' This gives both the condition (looking for specific stations) and the named alternatives, so no inference is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bus_positionsLive bus positionsA
Read-onlyIdempotent
Inspect

Get real-time positions of DC Metro buses, optionally filtered by route.

NameRequiredDescriptionDefault
routeIdNoOptional route ID filter (e.g., "30N"). Omit for all buses.

Output Schema

NameRequiredDescription
cityYes
busesYes
totalBusesYes
routeFilterYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered elsewhere. The description adds only the 'real-time' framing, with no detail on update cadence, staleness, or rate limits. Adequate but thin beyond the annotation baseline.

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?

A single front-loaded sentence naming the resource, the data freshness, and the filter in that order. Nothing is redundant and nothing is padded.

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

Completeness4/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-value shape need not be described, and the tool has only one optional parameter. What remains is a clear, if minimal, definition for a simple read-only lookup; only the lack of sibling routing keeps it from being fully complete.

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 single routeId parameter is fully documented in the schema, so the baseline is 3. The description's mention of an optional route filter matches the schema without adding format, syntax, or fallback detail (e.g., case sensitivity or invalid-route behavior).

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

Purpose4/5

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

States a specific verb and resource ('Get real-time positions of DC Metro buses') with a clear scope and an optional filter. It implicitly distinguishes itself from get_train_positions and get_vehicle_positions via the 'bus' mode, but never names those siblings explicitly, so the differentiation is inferential rather than stated.

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

Usage Guidelines3/5

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

The phrase 'optionally filtered by route' implies usage context (omit the filter for the full fleet), but there is no explicit when-to-use guidance, no exclusions, and no routing to alternatives such as get_bus_predictions or get_vehicle_positions. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bus_predictionsBus arrival predictionsA
Read-onlyIdempotent
Inspect

Get real-time bus arrival predictions for a DC Metro bus stop.

NameRequiredDescriptionDefault
stopIdYesDC Metro 7-digit regional bus stop ID (e.g., "1001195")

Output Schema

NameRequiredDescription
cityYes
stopIdYes
predictionsYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds only that predictions are real-time; it does not discuss freshness, update cadence, or rate limits, though an output schema exists for return values.

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?

A single clear sentence with the core purpose front-loaded and no wasted words.

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 simple one-parameter read-only prediction tool, the description, rich schema, annotations, and output schema together provide enough context for an agent to call it correctly.

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 single stopId parameter is fully documented in the schema with format and example. The description adds no additional parameter meaning beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource: getting real-time bus arrival predictions for a DC Metro bus stop. It distinguishes bus predictions from train/station predictions through the word "bus," though it does not explicitly name sibling alternatives.

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

Usage Guidelines3/5

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

Usage is implied by "for a DC Metro bus stop," but the description does not state when to use this tool versus get_station_predictions, get_departures, or get_bus_positions. No exclusions or alternative-routing guidance are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bus_routesAll bus routesA
Read-onlyIdempotent
Inspect

Get all DC Metro bus routes with route IDs and descriptions.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
cityYes
routesYes
totalRoutesYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured fields. The description confirms the read-only listing scope but adds no extra behavioral context such as result size, rate limits, or freshness, which is acceptable for a trivial no-arg read.

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?

A single sentence with the resource and scope front-loaded and no filler. Nothing can be trimmed without losing meaning.

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

Completeness4/5

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

For a no-argument listing tool with a full output schema and rich annotations, the description covers everything needed to call it correctly. Only a routing hint toward get_route_info for per-route detail 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The mention of returned fields is harmless even though an output schema exists.

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

Purpose4/5

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

Names a specific verb (Get), resource (DC Metro bus routes), scope (all), and the payload fields (route IDs and descriptions). The 'DC Metro' qualifier implicitly separates it from get_sfbay_routes in the sibling list, though no sibling is named directly.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus get_route_info (single-route detail) or get_sfbay_routes (other agency). The word 'all' implies the bulk-listing role, but the agent must infer it rather than being told.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bus_stopsBus stopsA
Read-onlyIdempotent
Inspect

Get DC Metro bus stops. Returns all stops or filters by lat/lon/radius.

NameRequiredDescriptionDefault
radiusNoSearch radius in meters
latitudeNoCenter latitude for geographic search
longitudeNoCenter longitude for geographic search

Output Schema

NameRequiredDescription
cityYes
stopsYes
totalStopsYes
searchLocationYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds the useful default behavior (returns everything when unfiltered), but says nothing about pagination, rate limits, or result size for a potentially large stop list.

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 tight sentences, front-loaded with the resource and immediately followed by the filter behavior. No filler, nothing to trim.

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

Completeness4/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 structure need not be explained, and annotations cover the safety profile. For a simple optional-filter read tool the description is nearly sufficient; only minor gaps about unfiltered result size or partial-param behavior remain.

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%, so all three params are already documented in the schema. The description only restates the lat/lon/radius filter concept without adding units, combinations (all three together?), or defaults beyond what the schema provides.

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

Purpose4/5

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

States a specific verb and resource ('Get DC Metro bus stops') and even names the retrieval modes (all vs. geographic filter). It distinguishes itself from station/position siblings by scoping to bus stops, though it never explicitly contrasts with them.

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

Usage Guidelines3/5

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

'Returns all stops or filters by lat/lon/radius' implies when the optional params matter, but there is no explicit when-to-use guidance, no mention of prerequisites, and no reference to alternatives like search_stations or get_bus_routes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_departuresDepartures at a stopA
Read-onlyIdempotent
Inspect

Find what leaves a stop next, the first service or last service in a bounded window. Pass a stopRef from find_transit, or a stop name with its coverage: a name for one place covers all its stations in that network (otherStations lists the same place in other networks, such as the LIRR at Penn Station); a name for different places returns a question to ask, with candidates. A station covers its whole complex, e.g. every line at Times Sq-42 St; a platform ref covers that platform. Pass toStop or toStopRef for the next trips from here that stop at a destination, each with its arrival time there. Returns dated trip references for get_vehicle_status. For a journey with a change use plan_trip (with routes where needed): departures alone cannot prove a connection.

NameRequiredDescriptionDefault
atNo
stopNoStop or station name, with coverage. Give this or stopRef.
limitNo
toStopNoDestination stop or station name, with coverage. Give this or toStopRef, or neither.
stopRefNoExact stop or station reference. Give this or stop.
coverageNoRegion: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.
routeRefsNo
selectionNofirst
toStopRefNoDestination stop or station: only trips that go on to stop there are listed, each with its arrival time there.
agencyRefsNo
windowSecondsNoSearch window in seconds, 1 through 604800 (seven days).

Output Schema

NameRequiredDescription
asOfYes
statusYes
reasonsYes
sourcesYes
departuresYes
attributionYes
otherStationsNoThe same place in another network (the LIRR at Penn Station): call again with its ref for its departures.
frequencyWindowsYes

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the readOnly/openWorld annotations by disclosing non-obvious behavior: an ambiguous name 'returns a question to ask, with candidates', station refs expand to a whole complex while platform refs do not, and results are dated trip references consumable by get_vehicle_status. Only pagination/limit behavior and the role of the `at` anchor are left unstated.

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?

Front-loaded with the core action and the primary reference-source hint, then rules, then the sibling redirect. Dense but every clause carries a decision-relevant constraint; the nested parenthetical about Penn Station/LIRR is the only mildly costly digression.

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 an 11-parameter, zero-required, open-world lookup with an output schema, the description covers the ambiguity cases, reference sourcing, coverage scope, destination filtering, and the down-stream tool handoff. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

At 55% schema coverage the description must compensate, and it does for the hardest parameters: `stop` vs `stopRef`, `coverage` naming/otherStations semantics, `toStop`/`toStopRef` (destination filtering with arrival times). Several parameters (`at`, `routeRefs`, `agencyRefs`, `limit`) get no description beyond their schema text, keeping it short of a 5.

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 ('Find what leaves a stop next') plus the variant scope ('first service or last service in a bounded window'). It also distinguishes itself from siblings by name ('use plan_trip', 'stopRef from find_transit', 'get_vehicle_status'), so an agent can route correctly 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?

Explicit about when to use and when not to: 'Pass a stopRef from find_transit', 'For a journey with a change use plan_trip', and the exclusion 'departures alone cannot prove a connection'. Alternatives and their selection conditions are named, not implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_elevator_incidentsElevator outagesA
Read-onlyIdempotent
Inspect

Get current elevator and escalator outages. DC Metro only.

NameRequiredDescriptionDefault
cityYes

Output Schema

NameRequiredDescription
cityYes
elevatorIncidentsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description only adds that results are 'current' outages, with no mention of freshness window, rate limits, or other operational behavior; an output schema handles the return shape.

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 short, front-loaded sentences with no wasted words. The scope restriction follows immediately after the purpose statement and 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 one-parameter, read-only lookup with annotations covering safety and an output schema covering the return shape, the description supplies exactly what is needed: what it returns and which system it covers.

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 description coverage is 0%, so the description must compensate for the single 'city' parameter. 'DC Metro only' effectively explains that the city enum resolves to dc, which is the only value present, so the parameter's meaning is clear despite the missing schema text.

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

Purpose4/5

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

States a specific verb and resource (get current elevator and escalator outages) and adds a scope qualifier, 'DC Metro only,' that implicitly separates it from get_sfbay_incidents. It does not explicitly name the sibling it is not, so it falls short of the top score.

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

Usage Guidelines3/5

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

The 'DC Metro only' constraint implies when the tool applies versus the SF Bay variants, but there is no explicit when-to-use/when-not guidance or named alternative. Usage is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_incidentsService incidentsA
Read-onlyIdempotent
Inspect

Get current transit incidents and service advisories for DC Metro or NYC Subway.

NameRequiredDescriptionDefault
cityYes

Output Schema

NameRequiredDescription
cityYes
incidentsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds only that incidents are 'current' (a freshness signal); it discloses nothing about rate limits, auth, or result scope, and an output schema exists so return details are unnecessary here.

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?

A single front-loaded sentence with zero filler. It is appropriately sized for a one-parameter lookup tool, though it is terse enough that it could have absorbed one more clause about usage without becoming bloated.

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

Completeness4/5

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

With a rich annotation set, an output schema, and a single enum parameter, the description covers what an agent needs: what it returns (incidents/advisories), for which cities, and that data is current. Only the absence of sibling routing keeps it from a 5.

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 description coverage is 0%, so the description must compensate. It maps the enum values to human meaning: 'DC Metro' for dc and 'NYC Subway' for nyc, which is genuinely useful beyond the bare enum in the schema. It does not add format or default details, keeping it at a 4 rather than 5.

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

Purpose4/5

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

States a specific verb ('Get'), resource ('current transit incidents and service advisories'), and coverage scope ('DC Metro or NYC Subway'). It implicitly distinguishes itself from get_elevator_incidents and get_sfbay_incidents by naming the cities served, though it does not name siblings explicitly.

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

Usage Guidelines3/5

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

Usage context is implied by 'current' (real-time incidents) and the city scope, but there is no explicit when-to-use guidance, no statement of exclusions, and no routing to the elevator or SF Bay incident siblings. Adequate but with clear gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_route_infoRoute informationA
Read-onlyIdempotent
Inspect

Get detailed information about a transit route including service patterns. NYC Subway only.

NameRequiredDescriptionDefault
cityYes
routeIdYesRoute identifier — NYC: A, B, C, D, E, F, M, G, J, Z, L, N, Q, R, W, 1, 2, 3, 4, 5, 6, 7, SI

Output Schema

NameRequiredDescription
cityYes
routeIdYes
longNameYes
shortNameYes
descriptionYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description contributes only 'including service patterns' as return-content context, and with an output schema present there is little burden left on the prose.

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?

Two short, front-loaded sentences with no filler; the capability comes first and the scope restriction second. Minor overlap between 'NYC Subway only' and the city enum keeps it from being maximally tight.

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

Completeness4/5

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

For a two-parameter lookup with rich annotations and a declared output schema, the description supplies purpose plus scope, which is nearly everything an agent needs. Only an explicit pointer to the sibling routes tools 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 50%: routeId is well documented in the schema while city carries only an enum. 'NYC Subway only' reinforces the single-value city enum and the NYC-only routeId list, but the description adds no format or syntax detail beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource — 'Get detailed information about a transit route' — and adds the payload detail 'including service patterns'. The 'NYC Subway only' scoping separates it from the get_sfbay_routes and get_bus_routes siblings, though no sibling is named directly.

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

Usage Guidelines3/5

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

The 'NYC Subway only' clause implies the usage boundary and effectively rules out the SF Bay and bus siblings, but the description never names an alternative or states an explicit when-to-use condition. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_service_statusTransit service statusA
Read-onlyIdempotent
Inspect

Check disruptions, delays, closures, elevator and escalator outages, or revalidate a chosen itinerary without replacing it. Scope by coverage, a station name with its coverage (stop), or an agency, route, stop or dated trip reference; a station covers its complex. Aggregate scopes include canonical service in the next 24 hours. equipment lists elevator/escalator outages: accessiblePath marks the step-free route, blocksStepFree marks stations step-free plan_trip avoids, and alternativeRoute is the agency's way around. Use get_vehicle_status for an observed vehicle location.

NameRequiredDescriptionDefault
refNoAgency, route, stop or dated trip reference; or a line's name ("L", "Red Line") with coverage.
stopNoStation name, e.g. "Fulton St", with coverage; a station covers its complex.
coverageNoRegion: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.
itineraryNoAn itinerary exactly as plan_trip returned it; validated strictly against that contract.

Output Schema

NameRequiredDescription
asOfYes
alertsYes
statusYes
reasonsYes
sourcesYes
equipmentNoElevator and escalator outages in scope, where the coverage publishes them.
legChecksYes
attributionYes
journeyValidYes
journeyReasonsYes
transferChecksYes

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations, the description adds meaningful behavioral detail: aggregate scopes include canonical service for the next 24 hours, station scope covers its complex, itinerary revalidation does not replace the itinerary, and equipment output fields such as accessiblePath and blocksStepFree are explained. These details materially help an agent understand what the tool returns and how to interpret it.

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 but front-loaded: it starts with the primary use cases, then scoping rules, aggregate behavior, equipment field meanings, and finally the sibling alternative. It is longer than necessary in places, especially the field-level equipment explanation, but most sentences carry useful information.

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 rich annotations, 100% schema coverage, and existing output schema, the description supplies enough context to call the tool correctly. It covers scoping, aggregate behavior, itinerary revalidation, equipment semantics, and the main alternative tool, leaving no major gap for an agent.

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 description coverage is 100%, so the baseline is 3, but the description adds useful meaning by explaining how coverage, stop, and ref relate to scoping a query. It also clarifies that itinerary is revalidated rather than replaced, supplementing the schema's contract reference.

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

Purpose4/5

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

The description uses a specific verb phrase, 'Check disruptions, delays, closures, elevator and escalator outages, or revalidate a chosen itinerary,' which clearly identifies the resource and operation. It distinguishes this tool from get_vehicle_status, but does not fully differentiate it from nearby siblings like get_incidents or get_elevator_incidents.

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

Usage Guidelines4/5

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

It gives a clear usage context for checking service status and explicitly routes observed vehicle location queries to get_vehicle_status. However, it does not state when to prefer this tool over get_incidents, get_elevator_incidents, or get_departures, which are plausible alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_station_predictionsTrain arrival predictionsA
Read-onlyIdempotent
Inspect

Get real-time train arrival predictions for a transit station. Supports DC Metro and NYC Subway. Accepts a station name or an exact station ID; if a name matches several stations, the result lists the candidates to choose from.

NameRequiredDescriptionDefault
cityYes
stationNameYesStation name (e.g., "Metro Center", "Times Square") — auto-converted to station ID. DC accepts codes like "A01".

Output Schema

NameRequiredDescription
cityYes
stationYes
predictionsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false), so the description's added context is what counts: it discloses real-time data, the two supported systems, automatic name-to-ID conversion, and that an ambiguous name yields a candidate list rather than a failure. It stops short of auth, rate limits, or freshness/staleness details.

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, no filler, front-loaded with the primary purpose. The scope constraint and the disambiguation rule each earn their 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?

With an output schema present, the description need not explain return values. It covers the two required parameters, the systems supported, and the ambiguous-name path, which is everything needed to call this 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 only 50% (city has an enum but no description), and the description compensates by mapping 'dc'/'nyc' to DC Metro and NYC Subway. For stationName it adds the ambiguity-handling behavior (multiple matches return candidates) on top of the schema's auto-conversion note, adding genuine value beyond the schema.

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 ('Get real-time train arrival predictions for a transit station') and immediately scopes it to DC Metro and NYC Subway, which implicitly separates it from the sibling get_sfbay_station_predictions and from get_bus_predictions/get_train_positions. An agent can identify the right tool from this line alone.

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

Usage Guidelines3/5

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

Usage is only implied: it's clear you call this for arrival predictions, but there is no explicit 'when to use this vs. get_sfbay_station_predictions' or any exclusion. The name-vs-ID and multi-match behavior is invocation guidance rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stations_by_lineStations on a lineA
Read-onlyIdempotent
Inspect

Get all stations on a specific transit line. Supports DC Metro and NYC Subway.

NameRequiredDescriptionDefault
cityYes
lineCodeYesLine code — DC: RD, BL, YL, OR, GR, SV | NYC: 1-7, A, C, E, B, D, F, M, N, Q, R, W, J, Z, L, G, SI

Output Schema

NameRequiredDescription
cityYes
lineYes
stationsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is fully covered. The description adds only the supported service systems, which largely duplicates the city enum, and says nothing about ordering, coverage completeness, or edge cases like a line serving multiple cities.

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 tight sentences, purpose front-loaded and the platform-coverage note following. Nothing is wasted and the reader gets the scope in the first clause.

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

Completeness4/5

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

With an output schema and full annotations, the description needn't explain return values or safety. It is nearly complete for a simple filtered lookup; only the sibling-routing guidance and any ordering/limit behavior are absent.

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 50%, but the undocumented half is the city enum (dc/nyc), which the phrase 'Supports DC Metro and NYC Subway' maps to real systems — a modest value-add. The lineCode details are already exhaustively documented in the schema, so the description correctly does not repeat them; baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Get all stations on a specific transit line'), so the agent knows exactly what it returns. It does not explicitly distinguish itself from the sibling get_all_stations or search_stations, leaving the line-filtered scope as the only implicit differentiator.

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

Usage Guidelines3/5

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

Usage is implied by 'on a specific transit line' — use this when you know the line and want its full station list. But no explicit when-not or named alternative (get_all_stations, search_stations, get_route_info) is given, so the agent must infer the boundary between siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_station_transfersStation transfersA
Read-onlyIdempotent
Inspect

Get transfer connections and nearby stations from a transit station. NYC Subway only.

NameRequiredDescriptionDefault
cityYes
stationIdYesStation ID (e.g., "127" for Times Square)

Output Schema

NameRequiredDescription
cityYes
stationIdYes
transfersYes
stationNameYes
totalTransfersYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered structurally. The description's only added behavioral context is the NYC-only scope. With annotations carrying the burden and an output schema present, this is adequate but not rich.

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 short sentences with zero padding; the functional statement comes first and the scope restriction second. Nothing could be removed without losing information.

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

Completeness4/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 values need no explanation, and both required parameters are at least partially documented. The description covers purpose and scope, but leaves minor gaps such as what counts as a 'nearby' station.

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 50% (stationId documented with an example, city only via enum), so the description does not need to carry full weight. It adds marginal value by explaining the single-value city enum ('NYC Subway only') but says nothing about stationId format or the meaning of 'nearby stations'.

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

Purpose4/5

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

States a specific verb and resource ('Get transfer connections and nearby stations from a transit station'), which is distinct from siblings like get_all_stations, search_stations, and get_stations_by_line. It does not name a sibling or explicitly contrast with them, so it lands at 4 rather than 5.

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

Usage Guidelines3/5

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

The 'NYC Subway only' clause is a real scoping constraint that tells the agent when this tool applies. However, it gives no guidance on prerequisites (e.g., how to obtain stationId, or whether search_stations should be used first) and no explicit alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_train_positionsLive train positionsA
Read-onlyIdempotent
Inspect

Get real-time positions of all trains on the DC Metro system.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
cityYes
trainsYes
totalTrainsYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is covered. The description adds the 'real-time' freshness cue and the 'all trains' completeness scope, but says nothing about refresh/rate characteristics or return shape.

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?

A single front-loaded sentence with no filler. It identifies verb, resource, recency, scope, and system in minimal space.

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

Completeness4/5

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

For a zero-parameter read tool with an output schema and full annotation coverage, the description supplies everything needed to invoke it. The one gap is routing clarity versus get_vehicle_positions and the sfbay variants, which is left to the agent to infer.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. Schema coverage is also 100%, meaning structured data fully carries any contractual detail.

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

Purpose4/5

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

States a specific verb and resource ('Get real-time positions of all trains') scoped to 'the DC Metro system,' which clearly separates it from the sfbay_* and bus siblings. It does not, however, distinguish itself from the similarly named get_vehicle_positions sibling, leaving overlap ambiguous.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to choose this over alternatives such as get_vehicle_positions, get_station_predictions, or the sfbay equivalents. The only implicit signal is the 'DC Metro' scope embedded in the purpose sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vehicle_statusWhere trains are nowA
Read-onlyIdempotent
Inspect

Where observed trains are right now. Pass a route ref to list its trains, a dated trip ref (from get_departures or a plan_trip leg) to find that train, or a station (stopRef, or a name with coverage) to see trains stopped at or heading to it; a station covers its whole complex. Each train reports the stop it is at or heading to (stopStatus), the stop it last served, and its destination. Coordinates are the vehicle's own when the agency sends them (DC); otherwise a stopped train is placed at its station and a moving one has none. Never pass a bare train number: use find_transit.

NameRequiredDescriptionDefault
refNoRoute, dated trip or stop/station reference. Give this or stop.
stopNoStation name, with coverage. Give this or ref.
limitNo
coverageNoRegion: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.

Output Schema

NameRequiredDescription
asOfYes
statusYes
reasonsYes
sourcesYes
vehiclesYes
attributionYes

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely non-obvious behavior: each result reports stopStatus, last served stop and destination, and coordinates are the vehicle's own only when the agency supplies them — otherwise a stopped train is placed at its station and a moving one has none. The note that a station covers its whole complex is exactly the kind of scope disclosure that prevents wrong conclusions from partial results.

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?

Front-loaded with what the tool returns, then the accepted inputs, then the caveats. The middle sentence is long and semicolon-chained, and the '(DC)' parenthetical is opaque, but nearly every clause carries information an agent needs.

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

Completeness4/5

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

With zero required params, an existing output schema and full safety annotations, the description covers input modes, output semantics and the coordinate fallback well. The only real gap is limit behavior and the unresolved overlap with the get_train_positions sibling.

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 75% and the description reinforces ref (route / dated trip / station), stop (name with coverage) and the station-complex semantics beyond the schema. The limit parameter has no description in either the schema or the description, leaving its effect on result volume undocumented.

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

Purpose4/5

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

Names a concrete resource and scope: real-time positions of observed trains, with three accepted lookup modes spelled out. An agent understands exactly what it retrieves, but the description never distinguishes this from the sibling get_train_positions, which by name appears to do the same thing.

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

Usage Guidelines4/5

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

Gives per-input usage rules ('Pass a route ref to list its trains', 'a dated trip ref (from get_departures or a plan_trip leg)', 'a station ... to see trains stopped at or heading to it') and an explicit exclusion routing to find_transit for bare train numbers. It stops short of telling the agent when to prefer this over get_train_positions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_tripPlan a transit journeyA
Read-onlyIdempotent
Inspect

Plan an origin-to-destination journey. Returns up to three independently validated itineraries (the fastest, then other lines); departure defaults to now. Pass the rider's place names as given: a name for one place (Penn Station, SFO) plans from or to all its stations. A name meaning different places (Broadway) returns the best trip from each, each labelled in reading and explained in notice: use the one the conversation points to, or ask the rider. The search covers every line of the coverage, buses included. When no itinerary is possible (planning unavailable, a search too large, or nothing found) it returns routeHints: lines near each end and direct lines serving both. Call again with routes (the lines you would ride, from routeHints or your own knowledge) to plan along only those lines, which works wherever schedules exist. Present only returned itineraries as confirmed. The whole journey must finish within windowSeconds (default two hours): if none is found for a long trip, retry with a larger window. Each transit leg carries a tripInstanceRef; pass it to get_vehicle_status to see where that train is now. For a wheelchair user or anyone avoiding stairs, set accessibility: "step_free": journeys then board, alight and change only at platforms step-free from the street per the agency (partial stations by direction), avoiding stations cut off by a current elevator outage; in-station changes between such platforms are taken as step-free. It refuses with ACCESSIBILITY_UNAVAILABLE when no current elevator report exists and ENDPOINT_NOT_STEP_FREE when an endpoint has no step-free platform now (get_service_status lists the outages). Never present a journey pieced together from get_departures as confirmed; check it here with routes.

NameRequiredDescriptionDefault
originYes
routesNoRoute refs (from find_transit) the journey may ride, e.g. the lines you would take: BART from SFO, then a Muni line. The server finds the actual trips, boarding stops, transfers and walks on only these routes and validates them. Works where full search is unavailable (SF Bay) and for buses.
coverageNoRegion: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.
departAtNo
destinationYes
maxTransfersNo
accessibilityNostep_free: only platforms reachable without stairs, avoiding current elevator outages.no_preference
maxWalkMetresNoWalking allowed at each end and between rides; more than 800 is taken as 800.
windowSecondsNo

Output Schema

NameRequiredDescription
asOfYes
noticeNoSet when a name means several places: which, and how the trips are labelled.
statusYes
reasonsYes
sourcesYes
routeHintsNoLines near each end. Pass the ones you would ride (in plan_trip.routes) to have their trips searched and validated.
attributionYes
itinerariesYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely useful behavior beyond that: ambiguity handling for names like Broadway (best trip per place, explained in notice), routeHints fallback when no itinerary is possible, the ACCESSIBILITY_UNAVAILABLE and ENDPOINT_NOT_STEP_FREE refusal codes, and how step_free treats in-station changes. That is rich, but it is behavior of the domain rather than of the tool's own operation (latency, result ordering guarantees beyond 'fastest then other lines', or partial-failure semantics), hence a 3 rather than higher.

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

Conciseness3/5

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

It is front-loaded with purpose and the return shape before the caveats, and nearly every clause carries a rule an agent needs. But it arrives as one dense undivided block of roughly 350 words mixing routing, ambiguity, accessibility, error codes and cross-tool advice; headers or a shorter accessibility paragraph would make it far easier to apply under load.

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 complex 9-parameter, multi-region planner with an output schema, and the description still covers the things the schema cannot: which regions are searched, how ambiguous names are resolved, what routeHints means and how to act on it, and the exact refusal conditions. An agent has everything it needs to call this correctly and to interpret a failure.

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 description coverage is only 44% across 9 parameters, so the description has to compensate, and it does for the hard ones: origin/destination accept names resolving to multiple stations, routes takes lines 'from routeHints or your own knowledge', departAt defaults to now, windowSeconds defaults to two hours with a documented retry rule, and accessibility: step_free is spelled out far beyond the schema's one-liner. maxTransfers and maxWalkMetres are never mentioned, leaving a real gap.

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?

Opens with a specific verb+resource: plans an origin-to-destination transit journey and returns up to three validated itineraries. It draws explicit boundaries against siblings (get_departures must not be presented as confirmed, get_vehicle_status consumes tripInstanceRef, find_transit provides route refs), so an agent can tell exactly what this tool does that the others don't.

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 concrete when-to-use rules: pass place names as given, call again with routes when full search is unavailable or when verifying a hand-built journey, retry with a larger windowSeconds when no long-trip itinerary is found, and set accessibility step_free for wheelchair users or stair-avoiders. It also names the anti-pattern (presenting get_departures output as confirmed) and the fix.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_stationsSearch stationsB
Read-onlyIdempotent
Inspect

Search for transit stations by name or code. Supports DC Metro and NYC Subway.

NameRequiredDescriptionDefault
cityYes
queryYesSearch query (station name or code)

Output Schema

NameRequiredDescription
cityYes
queryYes
resultsYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description's only added behavioral value is stating the two supported transit systems; it says nothing about result limits, ranking, or matching behavior beyond 'name or code'.

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?

Two short sentences, front-loaded with the core action and free of filler. Nothing extraneous, though there is room to fold in usage routing without bloating.

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

Completeness3/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 values need no explanation, and the tool is a simple two-parameter search with full annotation coverage. The remaining gap is the absent guidance on when this tool should be chosen versus its many siblings.

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 50%: query is documented, but the city enum (dc/nyc) has no description. The description partially compensates by mapping those systems to DC Metro and NYC Subway and by clarifying that query matches 'name or code', which is real added meaning over the bare enum.

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

Purpose4/5

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

States a specific verb ('Search') plus resource ('transit stations') and names the searchable fields (name or code), with the supported coverage (DC Metro, NYC Subway) scoping the tool. It implicitly separates itself from search_sfbay_stations by naming the DC/NYC systems, but never names that sibling explicitly, so differentiation is left partly to inference.

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

Usage Guidelines2/5

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

No when-to-use or when-not guidance and no alternatives named. The agent must infer from 'DC Metro and NYC Subway' that this is not for SF Bay, and there is no hint about choosing this over get_all_stations or get_stations_by_line.

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. 2 tool updates
    • Changedget_service_status1 field changed
      • changedInput schema / properties / ref / description
        Previous value: -"Agency, route, stop or dated trip reference."New value: +"Agency, route, stop or dated trip reference; or a line's name (\"L\", \"Red Line\") with coverage."
    • Changedplan_trip2 fields changed
      • addedInput schema / properties / maxWalkMetres / description
        Added value: +"Walking allowed at each end and between rides; more than 800 is taken as 800."
      • removedInput schema / properties / maxWalkMetres / maximum
        Removed value: -800
  2. 4 tool updates
    • Changedfind_transit3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -            "enum": [
        -              "sfbay",
        -              "SF",
        -              "San Francisco",
        -              "Bay Area",
        -              "dc",
        -              "DC",
        -              "Washington DC",
        -              "Washington, DC",
        -              "WMATA",
        -              "DC Metro",
        -              "Metrobus",
        -              "nyc",
        -              "NYC",
        -              "New York",
        -              "New York City",
        -              "NYC Subway",
        -              "MTA Subway",
        -              "MTA",
        -              "LIRR",
        -              "Long Island Rail Road",
        -              "Metro-North",
        -              "Metro-North Railroad"
        -            ],
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -        "enum": [
        -          "sfbay",
        -          "SF",
        -          "San Francisco",
        -          "Bay Area",
        -          "dc",
        -          "DC",
        -          "Washington DC",
        -          "Washington, DC",
        -          "WMATA",
        -          "DC Metro",
        -          "Metrobus",
        -          "nyc",
        -          "NYC",
        -          "New York",
        -          "New York City",
        -          "NYC Subway",
        -          "MTA Subway",
        -          "MTA",
        -          "LIRR",
        -          "Long Island Rail Road",
        -          "Metro-North",
        -          "Metro-North Railroad"
        -        ],
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "not": {}
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "not": {}
        -      },
        -      "query": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ref"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -            "enum": [
        -              "sfbay",
        -              "SF",
        -              "San Francisco",
        -              "Bay Area",
        -              "dc",
        -              "DC",
        -              "Washington DC",
        -              "Washington, DC",
        -              "WMATA",
        -              "DC Metro",
        -              "Metrobus",
        -              "nyc",
        -              "NYC",
        -              "New York",
        -              "New York City",
        -              "NYC Subway",
        -              "MTA Subway",
        -              "MTA",
        -              "LIRR",
        -              "Long Island Rail Road",
        -              "Metro-North",
        -              "Metro-North Railroad"
        -            ],
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -        "enum": [
        -          "sfbay",
        -          "SF",
        -          "San Francisco",
        -          "Bay Area",
        -          "dc",
        -          "DC",
        -          "Washington DC",
        -          "Washington, DC",
        -          "WMATA",
        -          "DC Metro",
        -          "Metrobus",
        -          "nyc",
        -          "NYC",
        -          "New York",
        -          "New York City",
        -          "NYC Subway",
        -          "MTA Subway",
        -          "MTA",
        -          "LIRR",
        -          "Long Island Rail Road",
        -          "Metro-North",
        -          "Metro-North Railroad"
        -        ],
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "not": {}
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "not": {}
        -      },
        -      "query": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "query"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -            "enum": [
        -              "sfbay",
        -              "SF",
        -              "San Francisco",
        -              "Bay Area",
        -              "dc",
        -              "DC",
        -              "Washington DC",
        -              "Washington, DC",
        -              "WMATA",
        -              "DC Metro",
        -              "Metrobus",
        -              "nyc",
        -              "NYC",
        -              "New York",
        -              "New York City",
        -              "NYC Subway",
        -              "MTA Subway",
        -              "MTA",
        -              "LIRR",
        -              "Long Island Rail Road",
        -              "Metro-North",
        -              "Metro-North Railroad"
        -            ],
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -        "enum": [
        -          "sfbay",
        -          "SF",
        -          "San Francisco",
        -          "Bay Area",
        -          "dc",
        -          "DC",
        -          "Washington DC",
        -          "Washington, DC",
        -          "WMATA",
        -          "DC Metro",
        -          "Metrobus",
        -          "nyc",
        -          "NYC",
        -          "New York",
        -          "New York City",
        -          "NYC Subway",
        -          "MTA Subway",
        -          "MTA",
        -          "LIRR",
        -          "Long Island Rail Road",
        -          "Metro-North",
        -          "Metro-North Railroad"
        -        ],
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "maximum": 90,
        -        "minimum": -90,
        -        "type": "number"
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "maximum": 180,
        -        "minimum": -180,
        -        "type": "number"
        -      },
        -      "query": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "latitude",
        -      "longitude"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -            "enum": [
        -              "sfbay",
        -              "SF",
        -              "San Francisco",
        -              "Bay Area",
        -              "dc",
        -              "DC",
        -              "Washington DC",
        -              "Washington, DC",
        -              "WMATA",
        -              "DC Metro",
        -              "Metrobus",
        -              "nyc",
        -              "NYC",
        -              "New York",
        -              "New York City",
        -              "NYC Subway",
        -              "MTA Subway",
        -              "MTA",
        -              "LIRR",
        -              "Long Island Rail Road",
        -              "Metro-North",
        -              "Metro-North Railroad"
        -            ],
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -        "enum": [
        -          "sfbay",
        -          "SF",
        -          "San Francisco",
        -          "Bay Area",
        -          "dc",
        -          "DC",
        -          "Washington DC",
        -          "Washington, DC",
        -          "WMATA",
        -          "DC Metro",
        -          "Metrobus",
        -          "nyc",
        -          "NYC",
        -          "New York",
        -          "New York City",
        -          "NYC Subway",
        -          "MTA Subway",
        -          "MTA",
        -          "LIRR",
        -          "Long Island Rail Road",
        -          "Metro-North",
        -          "Metro-North Railroad"
        -        ],
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "not": {}
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "not": {}
        -      },
        -      "query": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties
        Added value: +{
        +  "context": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +        "enum": [
        +          "sfbay",
        +          "SF",
        +          "San Francisco",
        +          "Bay Area",
        +          "dc",
        +          "DC",
        +          "Washington DC",
        +          "Washington, DC",
        +          "WMATA",
        +          "DC Metro",
        +          "Metrobus",
        +          "nyc",
        +          "NYC",
        +          "New York",
        +          "New York City",
        +          "NYC Subway",
        +          "MTA Subway",
        +          "MTA",
        +          "LIRR",
        +          "Long Island Rail Road",
        +          "Metro-North",
        +          "Metro-North Railroad"
        +        ],
        +        "type": "string"
        +      },
        +      "feed": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "serviceDate": {
        +        "pattern": "^\\d{8}$",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "coverage": {
        +    "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +    "enum": [
        +      "sfbay",
        +      "SF",
        +      "San Francisco",
        +      "Bay Area",
        +      "dc",
        +      "DC",
        +      "Washington DC",
        +      "Washington, DC",
        +      "WMATA",
        +      "DC Metro",
        +      "Metrobus",
        +      "nyc",
        +      "NYC",
        +      "New York",
        +      "New York City",
        +      "NYC Subway",
        +      "MTA Subway",
        +      "MTA",
        +      "LIRR",
        +      "Long Island Rail Road",
        +      "Metro-North",
        +      "Metro-North Railroad"
        +    ],
        +    "type": "string"
        +  },
        +  "latitude": {
        +    "description": "With longitude: stops near this point.",
        +    "maximum": 90,
        +    "minimum": -90,
        +    "type": "number"
        +  },
        +  "limit": {
        +    "default": 20,
        +    "maximum": 50,
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  "longitude": {
        +    "maximum": 180,
        +    "minimum": -180,
        +    "type": "number"
        +  },
        +  "query": {
        +    "description": "A name to search: station, stop, line, agency or train number.",
        +    "maxLength": 256,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "ref": {
        +    "description": "Exact reference to inspect.",
        +    "maxLength": 256,
        +    "minLength": 1,
        +    "type": "string"
        +  }
        +}
    • Changedget_departures1 field changed
      • addedOutput schema / properties / otherStations
        Added value: +{
        +  "description": "The same place in another network (the LIRR at Penn Station): call again with its ref for its departures.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coordinates": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "latitude": {
        +                "maximum": 90,
        +                "minimum": -90,
        +                "type": "number"
        +              },
        +              "longitude": {
        +                "maximum": 180,
        +                "minimum": -180,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "latitude",
        +              "longitude"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "coverage": {
        +        "type": "string"
        +      },
        +      "endpoint": {
        +        "enum": [
        +          "origin",
        +          "destination"
        +        ],
        +        "type": "string"
        +      },
        +      "feed": {
        +        "type": "string"
        +      },
        +      "kind": {
        +        "enum": [
        +          "agency",
        +          "route",
        +          "stop",
        +          "trip"
        +        ],
        +        "type": "string"
        +      },
        +      "modes": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "providerId": {
        +        "type": "string"
        +      },
        +      "ref": {
        +        "type": "string"
        +      },
        +      "routeCount": {
        +        "maximum": 9007199254740991,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "routeNames": {
        +        "description": "Lines serving it, up to ten.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "maxItems": 10,
        +        "type": "array"
        +      },
        +      "stationRef": {
        +        "type": "string"
        +      },
        +      "stopType": {
        +        "description": "station: groups platforms; platform: part of stationRef; stop: a standalone stop such as a street corner.",
        +        "enum": [
        +          "station",
        +          "platform",
        +          "stop",
        +          "entrance",
        +          "other"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "ref",
        +      "kind",
        +      "name",
        +      "coverage",
        +      "feed",
        +      "providerId"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_service_status3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -        "enum": [
        -          "sfbay",
        -          "SF",
        -          "San Francisco",
        -          "Bay Area",
        -          "dc",
        -          "DC",
        -          "Washington DC",
        -          "Washington, DC",
        -          "WMATA",
        -          "DC Metro",
        -          "Metrobus",
        -          "nyc",
        -          "NYC",
        -          "New York",
        -          "New York City",
        -          "NYC Subway",
        -          "MTA Subway",
        -          "MTA",
        -          "LIRR",
        -          "Long Island Rail Road",
        -          "Metro-North",
        -          "Metro-North Railroad"
        -        ],
        -        "type": "string"
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      },
        -      "stop": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "coverage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "not": {}
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "stop": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "ref"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        -        "enum": [
        -          "sfbay",
        -          "SF",
        -          "San Francisco",
        -          "Bay Area",
        -          "dc",
        -          "DC",
        -          "Washington DC",
        -          "Washington, DC",
        -          "WMATA",
        -          "DC Metro",
        -          "Metrobus",
        -          "nyc",
        -          "NYC",
        -          "New York",
        -          "New York City",
        -          "NYC Subway",
        -          "MTA Subway",
        -          "MTA",
        -          "LIRR",
        -          "Long Island Rail Road",
        -          "Metro-North",
        -          "Metro-North Railroad"
        -        ],
        -        "type": "string"
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      },
        -      "stop": {
        -        "description": "Station name, e.g. \"Fulton St\"; a station covers its complex.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "coverage",
        -      "stop"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "not": {}
        -      },
        -      "itinerary": {
        -        "additionalProperties": {},
        -        "description": "An itinerary exactly as plan_trip returned it; validated strictly against that contract.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "ref": {
        -        "not": {}
        -      },
        -      "stop": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "itinerary"
        -    ],
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties
        Added value: +{
        +  "coverage": {
        +    "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +    "enum": [
        +      "sfbay",
        +      "SF",
        +      "San Francisco",
        +      "Bay Area",
        +      "dc",
        +      "DC",
        +      "Washington DC",
        +      "Washington, DC",
        +      "WMATA",
        +      "DC Metro",
        +      "Metrobus",
        +      "nyc",
        +      "NYC",
        +      "New York",
        +      "New York City",
        +      "NYC Subway",
        +      "MTA Subway",
        +      "MTA",
        +      "LIRR",
        +      "Long Island Rail Road",
        +      "Metro-North",
        +      "Metro-North Railroad"
        +    ],
        +    "type": "string"
        +  },
        +  "itinerary": {
        +    "additionalProperties": {},
        +    "description": "An itinerary exactly as plan_trip returned it; validated strictly against that contract.",
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  "ref": {
        +    "description": "Agency, route, stop or dated trip reference.",
        +    "maxLength": 256,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "stop": {
        +    "description": "Station name, e.g. \"Fulton St\", with coverage; a station covers its complex.",
        +    "maxLength": 256,
        +    "minLength": 1,
        +    "type": "string"
        +  }
        +}
    • Changedplan_trip2 fields changed
      • addedOutput schema / properties / itineraries / items / properties / reading
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "When a name means several places: the place this trip is from and to (null: as given).",
        +  "properties": {
        +    "destination": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "origin": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "origin",
        +    "destination"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Set when a name means several places: which, and how the trips are labelled.",
        +  "type": "string"
        +}
  3. 5 tool updates
    • Changedfind_transit2 fields changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "not": {}
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "not": {}
        -      },
        -      "query": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ref"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "not": {}
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "not": {}
        -      },
        -      "query": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "query"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "maximum": 90,
        -        "minimum": -90,
        -        "type": "number"
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "maximum": 180,
        -        "minimum": -180,
        -        "type": "number"
        -      },
        -      "query": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "latitude",
        -      "longitude"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "not": {}
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "not": {}
        -      },
        -      "query": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "coverage": {
        +            "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +            "enum": [
        +              "sfbay",
        +              "SF",
        +              "San Francisco",
        +              "Bay Area",
        +              "dc",
        +              "DC",
        +              "Washington DC",
        +              "Washington, DC",
        +              "WMATA",
        +              "DC Metro",
        +              "Metrobus",
        +              "nyc",
        +              "NYC",
        +              "New York",
        +              "New York City",
        +              "NYC Subway",
        +              "MTA Subway",
        +              "MTA",
        +              "LIRR",
        +              "Long Island Rail Road",
        +              "Metro-North",
        +              "Metro-North Railroad"
        +            ],
        +            "type": "string"
        +          },
        +          "feed": {
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "serviceDate": {
        +            "pattern": "^\\d{8}$",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +        "enum": [
        +          "sfbay",
        +          "SF",
        +          "San Francisco",
        +          "Bay Area",
        +          "dc",
        +          "DC",
        +          "Washington DC",
        +          "Washington, DC",
        +          "WMATA",
        +          "DC Metro",
        +          "Metrobus",
        +          "nyc",
        +          "NYC",
        +          "New York",
        +          "New York City",
        +          "NYC Subway",
        +          "MTA Subway",
        +          "MTA",
        +          "LIRR",
        +          "Long Island Rail Road",
        +          "Metro-North",
        +          "Metro-North Railroad"
        +        ],
        +        "type": "string"
        +      },
        +      "latitude": {
        +        "not": {}
        +      },
        +      "limit": {
        +        "default": 20,
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "longitude": {
        +        "not": {}
        +      },
        +      "query": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "ref"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "coverage": {
        +            "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +            "enum": [
        +              "sfbay",
        +              "SF",
        +              "San Francisco",
        +              "Bay Area",
        +              "dc",
        +              "DC",
        +              "Washington DC",
        +              "Washington, DC",
        +              "WMATA",
        +              "DC Metro",
        +              "Metrobus",
        +              "nyc",
        +              "NYC",
        +              "New York",
        +              "New York City",
        +              "NYC Subway",
        +              "MTA Subway",
        +              "MTA",
        +              "LIRR",
        +              "Long Island Rail Road",
        +              "Metro-North",
        +              "Metro-North Railroad"
        +            ],
        +            "type": "string"
        +          },
        +          "feed": {
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "serviceDate": {
        +            "pattern": "^\\d{8}$",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +        "enum": [
        +          "sfbay",
        +          "SF",
        +          "San Francisco",
        +          "Bay Area",
        +          "dc",
        +          "DC",
        +          "Washington DC",
        +          "Washington, DC",
        +          "WMATA",
        +          "DC Metro",
        +          "Metrobus",
        +          "nyc",
        +          "NYC",
        +          "New York",
        +          "New York City",
        +          "NYC Subway",
        +          "MTA Subway",
        +          "MTA",
        +          "LIRR",
        +          "Long Island Rail Road",
        +          "Metro-North",
        +          "Metro-North Railroad"
        +        ],
        +        "type": "string"
        +      },
        +      "latitude": {
        +        "not": {}
        +      },
        +      "limit": {
        +        "default": 20,
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "longitude": {
        +        "not": {}
        +      },
        +      "query": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "ref": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "query"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "coverage": {
        +            "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +            "enum": [
        +              "sfbay",
        +              "SF",
        +              "San Francisco",
        +              "Bay Area",
        +              "dc",
        +              "DC",
        +              "Washington DC",
        +              "Washington, DC",
        +              "WMATA",
        +              "DC Metro",
        +              "Metrobus",
        +              "nyc",
        +              "NYC",
        +              "New York",
        +              "New York City",
        +              "NYC Subway",
        +              "MTA Subway",
        +              "MTA",
        +              "LIRR",
        +              "Long Island Rail Road",
        +              "Metro-North",
        +              "Metro-North Railroad"
        +            ],
        +            "type": "string"
        +          },
        +          "feed": {
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "serviceDate": {
        +            "pattern": "^\\d{8}$",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +        "enum": [
        +          "sfbay",
        +          "SF",
        +          "San Francisco",
        +          "Bay Area",
        +          "dc",
        +          "DC",
        +          "Washington DC",
        +          "Washington, DC",
        +          "WMATA",
        +          "DC Metro",
        +          "Metrobus",
        +          "nyc",
        +          "NYC",
        +          "New York",
        +          "New York City",
        +          "NYC Subway",
        +          "MTA Subway",
        +          "MTA",
        +          "LIRR",
        +          "Long Island Rail Road",
        +          "Metro-North",
        +          "Metro-North Railroad"
        +        ],
        +        "type": "string"
        +      },
        +      "latitude": {
        +        "maximum": 90,
        +        "minimum": -90,
        +        "type": "number"
        +      },
        +      "limit": {
        +        "default": 20,
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "longitude": {
        +        "maximum": 180,
        +        "minimum": -180,
        +        "type": "number"
        +      },
        +      "query": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "latitude",
        +      "longitude"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "coverage": {
        +            "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +            "enum": [
        +              "sfbay",
        +              "SF",
        +              "San Francisco",
        +              "Bay Area",
        +              "dc",
        +              "DC",
        +              "Washington DC",
        +              "Washington, DC",
        +              "WMATA",
        +              "DC Metro",
        +              "Metrobus",
        +              "nyc",
        +              "NYC",
        +              "New York",
        +              "New York City",
        +              "NYC Subway",
        +              "MTA Subway",
        +              "MTA",
        +              "LIRR",
        +              "Long Island Rail Road",
        +              "Metro-North",
        +              "Metro-North Railroad"
        +            ],
        +            "type": "string"
        +          },
        +          "feed": {
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "serviceDate": {
        +            "pattern": "^\\d{8}$",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +        "enum": [
        +          "sfbay",
        +          "SF",
        +          "San Francisco",
        +          "Bay Area",
        +          "dc",
        +          "DC",
        +          "Washington DC",
        +          "Washington, DC",
        +          "WMATA",
        +          "DC Metro",
        +          "Metrobus",
        +          "nyc",
        +          "NYC",
        +          "New York",
        +          "New York City",
        +          "NYC Subway",
        +          "MTA Subway",
        +          "MTA",
        +          "LIRR",
        +          "Long Island Rail Road",
        +          "Metro-North",
        +          "Metro-North Railroad"
        +        ],
        +        "type": "string"
        +      },
        +      "latitude": {
        +        "not": {}
        +      },
        +      "limit": {
        +        "default": 20,
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "longitude": {
        +        "not": {}
        +      },
        +      "query": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • addedOutput schema / properties / suggestions
        Added value: +{
        +  "description": "When no name matches: the closest stop names, not matches. Confirm one with the rider, or retry with the official station name.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coordinates": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "latitude": {
        +                "maximum": 90,
        +                "minimum": -90,
        +                "type": "number"
        +              },
        +              "longitude": {
        +                "maximum": 180,
        +                "minimum": -180,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "latitude",
        +              "longitude"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "coverage": {
        +        "type": "string"
        +      },
        +      "endpoint": {
        +        "enum": [
        +          "origin",
        +          "destination"
        +        ],
        +        "type": "string"
        +      },
        +      "feed": {
        +        "type": "string"
        +      },
        +      "kind": {
        +        "enum": [
        +          "agency",
        +          "route",
        +          "stop",
        +          "trip"
        +        ],
        +        "type": "string"
        +      },
        +      "modes": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "providerId": {
        +        "type": "string"
        +      },
        +      "ref": {
        +        "type": "string"
        +      },
        +      "routeCount": {
        +        "maximum": 9007199254740991,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "routeNames": {
        +        "description": "Lines serving it, up to ten.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "maxItems": 10,
        +        "type": "array"
        +      },
        +      "stationRef": {
        +        "type": "string"
        +      },
        +      "stopType": {
        +        "description": "station: groups platforms; platform: part of stationRef; stop: a standalone stop such as a street corner.",
        +        "enum": [
        +          "station",
        +          "platform",
        +          "stop",
        +          "entrance",
        +          "other"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "ref",
        +      "kind",
        +      "name",
        +      "coverage",
        +      "feed",
        +      "providerId"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_departures4 fields changed
      • changedInput schema / properties / coverage / description
        Previous value: -"Runtime coverage name or identifier; use find_transit to inspect availability."New value: +"Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several."
      • addedInput schema / properties / coverage / enum
        Added value: +[
        +  "sfbay",
        +  "SF",
        +  "San Francisco",
        +  "Bay Area",
        +  "dc",
        +  "DC",
        +  "Washington DC",
        +  "Washington, DC",
        +  "WMATA",
        +  "DC Metro",
        +  "Metrobus",
        +  "nyc",
        +  "NYC",
        +  "New York",
        +  "New York City",
        +  "NYC Subway",
        +  "MTA Subway",
        +  "MTA",
        +  "LIRR",
        +  "Long Island Rail Road",
        +  "Metro-North",
        +  "Metro-North Railroad"
        +]
      • removedInput schema / properties / coverage / maxLength
        Removed value: -256
      • removedInput schema / properties / coverage / minLength
        Removed value: -1
    • Changedget_service_status1 field changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      },
        -      "stop": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "coverage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "not": {}
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "stop": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "ref"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      },
        -      "stop": {
        -        "description": "Station name, e.g. \"Fulton St\"; a station covers its complex.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "coverage",
        -      "stop"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "not": {}
        -      },
        -      "itinerary": {
        -        "additionalProperties": {},
        -        "description": "An itinerary exactly as plan_trip returned it; validated strictly against that contract.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "ref": {
        -        "not": {}
        -      },
        -      "stop": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "itinerary"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +        "enum": [
        +          "sfbay",
        +          "SF",
        +          "San Francisco",
        +          "Bay Area",
        +          "dc",
        +          "DC",
        +          "Washington DC",
        +          "Washington, DC",
        +          "WMATA",
        +          "DC Metro",
        +          "Metrobus",
        +          "nyc",
        +          "NYC",
        +          "New York",
        +          "New York City",
        +          "NYC Subway",
        +          "MTA Subway",
        +          "MTA",
        +          "LIRR",
        +          "Long Island Rail Road",
        +          "Metro-North",
        +          "Metro-North Railroad"
        +        ],
        +        "type": "string"
        +      },
        +      "itinerary": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      },
        +      "stop": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "coverage"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "not": {}
        +      },
        +      "itinerary": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "stop": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "ref"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "description": "Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several.",
        +        "enum": [
        +          "sfbay",
        +          "SF",
        +          "San Francisco",
        +          "Bay Area",
        +          "dc",
        +          "DC",
        +          "Washington DC",
        +          "Washington, DC",
        +          "WMATA",
        +          "DC Metro",
        +          "Metrobus",
        +          "nyc",
        +          "NYC",
        +          "New York",
        +          "New York City",
        +          "NYC Subway",
        +          "MTA Subway",
        +          "MTA",
        +          "LIRR",
        +          "Long Island Rail Road",
        +          "Metro-North",
        +          "Metro-North Railroad"
        +        ],
        +        "type": "string"
        +      },
        +      "itinerary": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      },
        +      "stop": {
        +        "description": "Station name, e.g. \"Fulton St\"; a station covers its complex.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "coverage",
        +      "stop"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "not": {}
        +      },
        +      "itinerary": {
        +        "additionalProperties": {},
        +        "description": "An itinerary exactly as plan_trip returned it; validated strictly against that contract.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "ref": {
        +        "not": {}
        +      },
        +      "stop": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "itinerary"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_vehicle_status4 fields changed
      • changedInput schema / properties / coverage / description
        Previous value: -"Runtime coverage name or identifier; use find_transit to inspect availability."New value: +"Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several."
      • addedInput schema / properties / coverage / enum
        Added value: +[
        +  "sfbay",
        +  "SF",
        +  "San Francisco",
        +  "Bay Area",
        +  "dc",
        +  "DC",
        +  "Washington DC",
        +  "Washington, DC",
        +  "WMATA",
        +  "DC Metro",
        +  "Metrobus",
        +  "nyc",
        +  "NYC",
        +  "New York",
        +  "New York City",
        +  "NYC Subway",
        +  "MTA Subway",
        +  "MTA",
        +  "LIRR",
        +  "Long Island Rail Road",
        +  "Metro-North",
        +  "Metro-North Railroad"
        +]
      • removedInput schema / properties / coverage / maxLength
        Removed value: -256
      • removedInput schema / properties / coverage / minLength
        Removed value: -1
    • Changedplan_trip4 fields changed
      • changedInput schema / properties / coverage / description
        Previous value: -"Runtime coverage name or identifier; use find_transit to inspect availability."New value: +"Region: sfbay (San Francisco Bay Area), dc (Washington DC Metro and Metrobus), nyc (New York City Subway, LIRR and Metro-North). Region names such as SF or Washington DC also work. Pick the region the place is in; where optional, leave it out only if the place could be in several."
      • addedInput schema / properties / coverage / enum
        Added value: +[
        +  "sfbay",
        +  "SF",
        +  "San Francisco",
        +  "Bay Area",
        +  "dc",
        +  "DC",
        +  "Washington DC",
        +  "Washington, DC",
        +  "WMATA",
        +  "DC Metro",
        +  "Metrobus",
        +  "nyc",
        +  "NYC",
        +  "New York",
        +  "New York City",
        +  "NYC Subway",
        +  "MTA Subway",
        +  "MTA",
        +  "LIRR",
        +  "Long Island Rail Road",
        +  "Metro-North",
        +  "Metro-North Railroad"
        +]
      • removedInput schema / properties / coverage / maxLength
        Removed value: -256
      • removedInput schema / properties / coverage / minLength
        Removed value: -1
  4. 1 tool update
    • Changedget_bus_predictions1 field changed
      • addedInput schema / properties / stopId / pattern
        Added value: +"^\\d{7}$"
  5. 1 tool update
    • Changedfind_transit1 field changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "not": {}
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "not": {}
        -      },
        -      "query": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ref"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "not": {}
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "not": {}
        -      },
        -      "query": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "query"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "context": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "coverage": {
        -            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "feed": {
        -            "maxLength": 256,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "serviceDate": {
        -            "pattern": "^\\d{8}$",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "maximum": 90,
        -        "minimum": -90,
        -        "type": "number"
        -      },
        -      "limit": {
        -        "default": 20,
        -        "maximum": 50,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "longitude": {
        -        "maximum": 180,
        -        "minimum": -180,
        -        "type": "number"
        -      },
        -      "query": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "latitude",
        -      "longitude"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "coverage": {
        +            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "feed": {
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "serviceDate": {
        +            "pattern": "^\\d{8}$",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "latitude": {
        +        "not": {}
        +      },
        +      "limit": {
        +        "default": 20,
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "longitude": {
        +        "not": {}
        +      },
        +      "query": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "ref"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "coverage": {
        +            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "feed": {
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "serviceDate": {
        +            "pattern": "^\\d{8}$",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "latitude": {
        +        "not": {}
        +      },
        +      "limit": {
        +        "default": 20,
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "longitude": {
        +        "not": {}
        +      },
        +      "query": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "ref": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "query"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "coverage": {
        +            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "feed": {
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "serviceDate": {
        +            "pattern": "^\\d{8}$",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "latitude": {
        +        "maximum": 90,
        +        "minimum": -90,
        +        "type": "number"
        +      },
        +      "limit": {
        +        "default": 20,
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "longitude": {
        +        "maximum": 180,
        +        "minimum": -180,
        +        "type": "number"
        +      },
        +      "query": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "latitude",
        +      "longitude"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "coverage": {
        +            "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "feed": {
        +            "maxLength": 256,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "serviceDate": {
        +            "pattern": "^\\d{8}$",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "coverage": {
        +        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "latitude": {
        +        "not": {}
        +      },
        +      "limit": {
        +        "default": 20,
        +        "maximum": 50,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "longitude": {
        +        "not": {}
        +      },
        +      "query": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
  6. 2 tool updates
    • Changedfind_transit12 fields changed
      • addedOutput schema / properties / candidates / items / properties / coordinates
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "latitude": {
        +          "maximum": 90,
        +          "minimum": -90,
        +          "type": "number"
        +        },
        +        "longitude": {
        +          "maximum": 180,
        +          "minimum": -180,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "latitude",
        +        "longitude"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / candidates / items / properties / modes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / candidates / items / properties / routeCount
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / candidates / items / properties / routeNames
        Added value: +{
        +  "description": "Lines serving it, up to ten.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 10,
        +  "type": "array"
        +}
      • addedOutput schema / properties / candidates / items / properties / stationRef
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / candidates / items / properties / stopType
        Added value: +{
        +  "description": "station: groups platforms; platform: part of stationRef; stop: a standalone stop such as a street corner.",
        +  "enum": [
        +    "station",
        +    "platform",
        +    "stop",
        +    "entrance",
        +    "other"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / entities / items / properties / modes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / entities / items / properties / routeCount
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / entities / items / properties / routeNames
        Added value: +{
        +  "description": "Lines serving it, up to ten.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 10,
        +  "type": "array"
        +}
      • addedOutput schema / properties / entities / items / properties / stationRef
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / entities / items / properties / stopType
        Added value: +{
        +  "description": "station: groups platforms; platform: part of stationRef; stop: a standalone stop such as a street corner.",
        +  "enum": [
        +    "station",
        +    "platform",
        +    "stop",
        +    "entrance",
        +    "other"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / entities / items / required
        Previous value: -[
        -  "ref",
        -  "kind",
        -  "name",
        -  "coverage",
        -  "feed",
        -  "providerId",
        -  "scheduleVersion",
        -  "resourceUri",
        -  "coordinates",
        -  "routeRefs",
        -  "agencyRef",
        -  "mode",
        -  "patterns",
        -  "calls",
        -  "stepFree"
        -]New value: +[
        +  "ref",
        +  "kind",
        +  "name",
        +  "coverage",
        +  "feed",
        +  "providerId",
        +  "coordinates",
        +  "scheduleVersion",
        +  "resourceUri",
        +  "routeRefs",
        +  "agencyRef",
        +  "mode",
        +  "patterns",
        +  "calls",
        +  "stepFree"
        +]
    • Changedget_service_status1 field changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "coverage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "not": {}
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ref"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "not": {}
        -      },
        -      "itinerary": {
        -        "additionalProperties": {},
        -        "description": "An itinerary exactly as plan_trip returned it; validated strictly against that contract.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "itinerary"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "itinerary": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      },
        +      "stop": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "coverage"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "not": {}
        +      },
        +      "itinerary": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "stop": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "ref"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "itinerary": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      },
        +      "stop": {
        +        "description": "Station name, e.g. \"Fulton St\"; a station covers its complex.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "coverage",
        +      "stop"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "not": {}
        +      },
        +      "itinerary": {
        +        "additionalProperties": {},
        +        "description": "An itinerary exactly as plan_trip returned it; validated strictly against that contract.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "ref": {
        +        "not": {}
        +      },
        +      "stop": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "itinerary"
        +    ],
        +    "type": "object"
        +  }
        +]
  7. 5 tool updates
    • Changedfind_transit1 field changed
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED",
        -  "ACCESSIBILITY_UNAVAILABLE",
        -  "ENDPOINT_NOT_STEP_FREE"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE",
        +  "PLANNING_UNAVAILABLE"
        +]
    • Changedget_departures5 fields changed
      • addedInput schema / properties / toStop
        Added value: +{
        +  "description": "Destination stop or station name, with coverage. Give this or toStopRef, or neither.",
        +  "maxLength": 256,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / toStopRef
        Added value: +{
        +  "description": "Destination stop or station: only trips that go on to stop there are listed, each with its arrival time there.",
        +  "maxLength": 256,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / departures / items / properties / arrival
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "predictedTime": {
        +          "anyOf": [
        +            {
        +              "format": "date-time",
        +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "scheduledTime": {
        +          "anyOf": [
        +            {
        +              "format": "date-time",
        +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "stopName": {
        +          "type": "string"
        +        },
        +        "stopRef": {
        +          "type": "string"
        +        },
        +        "stopSequence": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "stopRef",
        +        "stopName",
        +        "stopSequence",
        +        "scheduledTime",
        +        "predictedTime"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "With a destination: where and when this trip reaches it. Null without one."
        +}
      • changedOutput schema / properties / departures / items / required
        Previous value: -[
        -  "tripRef",
        -  "serviceDate",
        -  "routeRef",
        -  "routeName",
        -  "agencyRef",
        -  "stopRef",
        -  "stopName",
        -  "stopSequence",
        -  "stepFree",
        -  "headsign",
        -  "directionId",
        -  "pickupType",
        -  "status",
        -  "feedId",
        -  "scheduleVersion",
        -  "agencyTimezone",
        -  "tripInstanceRef",
        -  "scheduledTime",
        -  "predictedTime",
        -  "platform",
        -  "scheduleMatch"
        -]New value: +[
        +  "tripRef",
        +  "serviceDate",
        +  "routeRef",
        +  "routeName",
        +  "agencyRef",
        +  "stopRef",
        +  "stopName",
        +  "stopSequence",
        +  "stepFree",
        +  "headsign",
        +  "directionId",
        +  "pickupType",
        +  "status",
        +  "feedId",
        +  "scheduleVersion",
        +  "agencyTimezone",
        +  "tripInstanceRef",
        +  "scheduledTime",
        +  "predictedTime",
        +  "platform",
        +  "scheduleMatch",
        +  "arrival"
        +]
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED",
        -  "ACCESSIBILITY_UNAVAILABLE",
        -  "ENDPOINT_NOT_STEP_FREE"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE",
        +  "PLANNING_UNAVAILABLE"
        +]
    • Changedget_service_status1 field changed
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED",
        -  "ACCESSIBILITY_UNAVAILABLE",
        -  "ENDPOINT_NOT_STEP_FREE"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE",
        +  "PLANNING_UNAVAILABLE"
        +]
    • Changedget_vehicle_status1 field changed
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED",
        -  "ACCESSIBILITY_UNAVAILABLE",
        -  "ENDPOINT_NOT_STEP_FREE"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE",
        +  "PLANNING_UNAVAILABLE"
        +]
    • Changedplan_trip4 fields changed
      • addedInput schema / properties / routes
        Added value: +{
        +  "description": "Route refs (from find_transit) the journey may ride, e.g. the lines you would take: BART from SFO, then a Muni line. The server finds the actual trips, boarding stops, transfers and walks on only these routes and validates them. Works where full search is unavailable (SF Bay) and for buses.",
        +  "items": {
        +    "maxLength": 256,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 4,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / itineraries / items / properties / steps
        Added value: +{
        +  "items": {
        +    "description": "fromName/toName null means the caller's own map point.",
        +    "oneOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "arrivalTime": {
        +            "format": "date-time",
        +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +            "type": "string"
        +          },
        +          "departureTime": {
        +            "format": "date-time",
        +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +            "type": "string"
        +          },
        +          "distanceMetres": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "fromName": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "kind": {
        +            "const": "walk",
        +            "type": "string"
        +          },
        +          "minutes": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "throughStation": {
        +            "description": "Includes walkways inside a station (published pathways).",
        +            "type": "boolean"
        +          },
        +          "toName": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "fromName",
        +          "toName",
        +          "departureTime",
        +          "arrivalTime",
        +          "distanceMetres",
        +          "minutes",
        +          "throughStation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "arrivalTime": {
        +            "format": "date-time",
        +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +            "type": "string"
        +          },
        +          "departureTime": {
        +            "format": "date-time",
        +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +            "type": "string"
        +          },
        +          "fromName": {
        +            "type": "string"
        +          },
        +          "headsign": {
        +            "type": "string"
        +          },
        +          "intermediateStopCount": {
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "kind": {
        +            "const": "ride",
        +            "type": "string"
        +          },
        +          "mode": {
        +            "type": "string"
        +          },
        +          "routeName": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "realtime",
        +              "scheduled_only"
        +            ],
        +            "type": "string"
        +          },
        +          "toName": {
        +            "type": "string"
        +          },
        +          "tripInstanceRef": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "routeName",
        +          "headsign",
        +          "mode",
        +          "fromName",
        +          "toName",
        +          "departureTime",
        +          "arrivalTime",
        +          "status",
        +          "intermediateStopCount",
        +          "tripInstanceRef"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED",
        -  "ACCESSIBILITY_UNAVAILABLE",
        -  "ENDPOINT_NOT_STEP_FREE"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE",
        +  "PLANNING_UNAVAILABLE"
        +]
      • addedOutput schema / properties / routeHints
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Lines near each end. Pass the ones you would ride (in plan_trip.routes) to have their trips searched and validated.",
        +  "properties": {
        +    "destination": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "agencyRef": {
        +            "type": "string"
        +          },
        +          "mode": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "ref": {
        +            "type": "string"
        +          },
        +          "stopName": {
        +            "type": "string"
        +          },
        +          "stopRef": {
        +            "description": "The nearest stop the line serves.",
        +            "type": "string"
        +          },
        +          "walkMetres": {
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "ref",
        +          "name",
        +          "mode",
        +          "agencyRef",
        +          "stopRef",
        +          "stopName",
        +          "walkMetres"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "direct": {
        +      "description": "Lines serving stops near both ends: a one-seat ride may exist.",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "agencyRef": {
        +            "type": "string"
        +          },
        +          "mode": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "ref": {
        +            "type": "string"
        +          },
        +          "stopName": {
        +            "type": "string"
        +          },
        +          "stopRef": {
        +            "description": "The nearest stop the line serves.",
        +            "type": "string"
        +          },
        +          "walkMetres": {
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "ref",
        +          "name",
        +          "mode",
        +          "agencyRef",
        +          "stopRef",
        +          "stopName",
        +          "walkMetres"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "origin": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "agencyRef": {
        +            "type": "string"
        +          },
        +          "mode": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "ref": {
        +            "type": "string"
        +          },
        +          "stopName": {
        +            "type": "string"
        +          },
        +          "stopRef": {
        +            "description": "The nearest stop the line serves.",
        +            "type": "string"
        +          },
        +          "walkMetres": {
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "ref",
        +          "name",
        +          "mode",
        +          "agencyRef",
        +          "stopRef",
        +          "stopName",
        +          "walkMetres"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "direct",
        +    "origin",
        +    "destination"
        +  ],
        +  "type": "object"
        +}
  8. 5 tool updates
    • Changedfind_transit4 fields changed
      • addedOutput schema / properties / entities / items / properties / stepFree
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "accessible",
        +        "partial",
        +        "not_accessible",
        +        "unknown"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Step-free access from the street per the agency's station data (stops only; partial = some platforms, e.g. one direction). Live elevator outages are in get_service_status."
        +}
      • changedOutput schema / properties / entities / items / required
        Previous value: -[
        -  "ref",
        -  "kind",
        -  "name",
        -  "coverage",
        -  "feed",
        -  "providerId",
        -  "scheduleVersion",
        -  "resourceUri",
        -  "coordinates",
        -  "routeRefs",
        -  "agencyRef",
        -  "mode",
        -  "patterns",
        -  "calls"
        -]New value: +[
        +  "ref",
        +  "kind",
        +  "name",
        +  "coverage",
        +  "feed",
        +  "providerId",
        +  "scheduleVersion",
        +  "resourceUri",
        +  "coordinates",
        +  "routeRefs",
        +  "agencyRef",
        +  "mode",
        +  "patterns",
        +  "calls",
        +  "stepFree"
        +]
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE"
        +]
      • changedOutput schema / properties / sources / items / properties / kind / enum
        Previous value: -[
        -  "gtfs_schedule",
        -  "trip_updates",
        -  "vehicle_positions",
        -  "alerts",
        -  "native_api"
        -]New value: +[
        +  "gtfs_schedule",
        +  "trip_updates",
        +  "vehicle_positions",
        +  "alerts",
        +  "equipment_outages",
        +  "native_api"
        +]
    • Changedget_departures6 fields changed
      • addedOutput schema / properties / departures / items / properties / stepFree
        Added value: +{
        +  "description": "Step-free access to this platform per the agency's station data; live elevator outages are in get_service_status.",
        +  "enum": [
        +    "accessible",
        +    "not_accessible",
        +    "unknown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / departures / items / required
        Previous value: -[
        -  "tripRef",
        -  "serviceDate",
        -  "routeRef",
        -  "routeName",
        -  "agencyRef",
        -  "stopRef",
        -  "stopName",
        -  "stopSequence",
        -  "headsign",
        -  "directionId",
        -  "pickupType",
        -  "status",
        -  "feedId",
        -  "scheduleVersion",
        -  "agencyTimezone",
        -  "tripInstanceRef",
        -  "scheduledTime",
        -  "predictedTime",
        -  "platform",
        -  "scheduleMatch"
        -]New value: +[
        +  "tripRef",
        +  "serviceDate",
        +  "routeRef",
        +  "routeName",
        +  "agencyRef",
        +  "stopRef",
        +  "stopName",
        +  "stopSequence",
        +  "stepFree",
        +  "headsign",
        +  "directionId",
        +  "pickupType",
        +  "status",
        +  "feedId",
        +  "scheduleVersion",
        +  "agencyTimezone",
        +  "tripInstanceRef",
        +  "scheduledTime",
        +  "predictedTime",
        +  "platform",
        +  "scheduleMatch"
        +]
      • addedOutput schema / properties / frequencyWindows / items / properties / stepFree
        Added value: +{
        +  "description": "Step-free access to this platform per the agency's station data; live elevator outages are in get_service_status.",
        +  "enum": [
        +    "accessible",
        +    "not_accessible",
        +    "unknown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / frequencyWindows / items / required
        Previous value: -[
        -  "tripRef",
        -  "serviceDate",
        -  "routeRef",
        -  "routeName",
        -  "agencyRef",
        -  "stopRef",
        -  "stopName",
        -  "stopSequence",
        -  "headsign",
        -  "directionId",
        -  "pickupType",
        -  "status",
        -  "feedId",
        -  "scheduleVersion",
        -  "agencyTimezone",
        -  "tripTemplateRef",
        -  "startTime",
        -  "endTime",
        -  "overlapStartTime",
        -  "overlapEndTime",
        -  "headwaySeconds",
        -  "exactTimes"
        -]New value: +[
        +  "tripRef",
        +  "serviceDate",
        +  "routeRef",
        +  "routeName",
        +  "agencyRef",
        +  "stopRef",
        +  "stopName",
        +  "stopSequence",
        +  "stepFree",
        +  "headsign",
        +  "directionId",
        +  "pickupType",
        +  "status",
        +  "feedId",
        +  "scheduleVersion",
        +  "agencyTimezone",
        +  "tripTemplateRef",
        +  "startTime",
        +  "endTime",
        +  "overlapStartTime",
        +  "overlapEndTime",
        +  "headwaySeconds",
        +  "exactTimes"
        +]
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE"
        +]
      • changedOutput schema / properties / sources / items / properties / kind / enum
        Previous value: -[
        -  "gtfs_schedule",
        -  "trip_updates",
        -  "vehicle_positions",
        -  "alerts",
        -  "native_api"
        -]New value: +[
        +  "gtfs_schedule",
        +  "trip_updates",
        +  "vehicle_positions",
        +  "alerts",
        +  "equipment_outages",
        +  "native_api"
        +]
    • Changedget_service_status3 fields changed
      • addedOutput schema / properties / equipment
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Elevator and escalator outages in scope, where the coverage publishes them.",
        +  "properties": {
        +    "blockingStepFreeCount": {
        +      "maximum": 9007199254740991,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "count": {
        +      "maximum": 9007199254740991,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "outages": {
        +      "description": "At most 20, blocking and accessible-path outages first.",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "accessiblePath": {
        +            "description": "On the step-free (ADA) path.",
        +            "type": "boolean"
        +          },
        +          "alternativeRoute": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Agency-supplied way around the outage."
        +          },
        +          "blocksStepFree": {
        +            "description": "Step-free plan_trip avoids these stations while this lasts.",
        +            "type": "boolean"
        +          },
        +          "equipmentId": {
        +            "type": "string"
        +          },
        +          "estimatedReturn": {
        +            "anyOf": [
        +              {
        +                "format": "date-time",
        +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "hasBackup": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Agency says another elevator covers the same path; null when it does not say."
        +          },
        +          "kind": {
        +            "enum": [
        +              "elevator",
        +              "escalator"
        +            ],
        +            "type": "string"
        +          },
        +          "location": {
        +            "type": "string"
        +          },
        +          "reason": {
        +            "type": "string"
        +          },
        +          "since": {
        +            "anyOf": [
        +              {
        +                "format": "date-time",
        +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "stationName": {
        +            "type": "string"
        +          },
        +          "stationRefs": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "maxItems": 8,
        +            "type": "array"
        +          },
        +          "upcoming": {
        +            "description": "Announced, starting within 24 hours.",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "equipmentId",
        +          "kind",
        +          "stationRefs",
        +          "stationName",
        +          "location",
        +          "accessiblePath",
        +          "hasBackup",
        +          "blocksStepFree",
        +          "reason",
        +          "since",
        +          "estimatedReturn",
        +          "upcoming",
        +          "alternativeRoute"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "description": "Freshness of the agency equipment report; not_offered when this coverage publishes none.",
        +      "enum": [
        +        "current",
        +        "stale",
        +        "unavailable",
        +        "not_offered"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "count",
        +    "blockingStepFreeCount",
        +    "outages"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE"
        +]
      • changedOutput schema / properties / sources / items / properties / kind / enum
        Previous value: -[
        -  "gtfs_schedule",
        -  "trip_updates",
        -  "vehicle_positions",
        -  "alerts",
        -  "native_api"
        -]New value: +[
        +  "gtfs_schedule",
        +  "trip_updates",
        +  "vehicle_positions",
        +  "alerts",
        +  "equipment_outages",
        +  "native_api"
        +]
    • Changedget_vehicle_status21 fields changed
      • addedInput schema / properties / coverage
        Added value: +{
        +  "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +  "maxLength": 256,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / ref / description
        Added value: +"Route, dated trip or stop/station reference. Give this or stop."
      • addedInput schema / properties / stop
        Added value: +{
        +  "description": "Station name, with coverage. Give this or ref.",
        +  "maxLength": 256,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "ref"
        -]
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE"
        +]
      • changedOutput schema / properties / sources / items / properties / kind / enum
        Previous value: -[
        -  "gtfs_schedule",
        -  "trip_updates",
        -  "vehicle_positions",
        -  "alerts",
        -  "native_api"
        -]New value: +[
        +  "gtfs_schedule",
        +  "trip_updates",
        +  "vehicle_positions",
        +  "alerts",
        +  "equipment_outages",
        +  "native_api"
        +]
      • removedOutput schema / properties / vehicles / items / properties / coordinates / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / vehicles / items / properties / coordinates / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "latitude": {
        +        "maximum": 90,
        +        "minimum": -90,
        +        "type": "number"
        +      },
        +      "longitude": {
        +        "maximum": 180,
        +        "minimum": -180,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "latitude",
        +      "longitude"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / vehicles / items / properties / coordinates / properties
        Removed value: -{
        -  "latitude": {
        -    "maximum": 90,
        -    "minimum": -90,
        -    "type": "number"
        -  },
        -  "longitude": {
        -    "maximum": 180,
        -    "minimum": -180,
        -    "type": "number"
        -  }
        -}
      • removedOutput schema / properties / vehicles / items / properties / coordinates / required
        Removed value: -[
        -  "latitude",
        -  "longitude"
        -]
      • removedOutput schema / properties / vehicles / items / properties / coordinates / type
        Removed value: -"object"
      • addedOutput schema / properties / vehicles / items / properties / coordinatesSource
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "vehicle",
        +        "stop"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / vehicles / items / properties / headsign
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / vehicles / items / properties / previousStopName
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / vehicles / items / properties / previousStopRef
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "The scheduled stop before stopRef while the train is between stops; null when stopped or off its scheduled pattern."
        +}
      • addedOutput schema / properties / vehicles / items / properties / routeName
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Public route name, e.g. \"A\" or \"Red\"."
        +}
      • addedOutput schema / properties / vehicles / items / properties / stopName
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / vehicles / items / properties / stopRef
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / vehicles / items / properties / stopStatus
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "stopped_at",
        +        "incoming_at",
        +        "in_transit_to"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Relation to stopRef: stopped there, arriving, or travelling towards it."
        +}
      • addedOutput schema / properties / vehicles / items / properties / trainId
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "The agency's train identifier: an NYCT train ID such as \"1A 1023 207/FAR\" (line, scheduled origin time, origin/destination) or the label WMATA publishes. find_transit resolves it to this train's trip."
        +}
      • changedOutput schema / properties / vehicles / items / required
        Previous value: -[
        -  "id",
        -  "tripInstanceRef",
        -  "routeRef",
        -  "coordinates",
        -  "bearing",
        -  "speedMetersPerSecond",
        -  "observedAt",
        -  "ageSeconds"
        -]New value: +[
        +  "id",
        +  "trainId",
        +  "tripInstanceRef",
        +  "routeRef",
        +  "routeName",
        +  "headsign",
        +  "stopStatus",
        +  "stopRef",
        +  "stopName",
        +  "previousStopRef",
        +  "previousStopName",
        +  "coordinates",
        +  "coordinatesSource",
        +  "bearing",
        +  "speedMetersPerSecond",
        +  "observedAt",
        +  "ageSeconds"
        +]
    • Changedplan_trip4 fields changed
      • addedInput schema / properties / accessibility / description
        Added value: +"step_free: only platforms reachable without stairs, avoiding current elevator outages."
      • changedOutput schema / properties / itineraries / items / properties / legs / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "agencyRef": {
        -        "type": "string"
        -      },
        -      "alightSequence": {
        -        "maximum": 9007199254740991,
        -        "minimum": -9007199254740991,
        -        "type": "integer"
        -      },
        -      "arrivalTime": {
        -        "format": "date-time",
        -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -        "type": "string"
        -      },
        -      "boardSequence": {
        -        "maximum": 9007199254740991,
        -        "minimum": -9007199254740991,
        -        "type": "integer"
        -      },
        -      "continuation": {
        -        "type": "boolean"
        -      },
        -      "departureTime": {
        -        "format": "date-time",
        -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -        "type": "string"
        -      },
        -      "directionId": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "from": {
        -        "type": "string"
        -      },
        -      "headsign": {
        -        "type": "string"
        -      },
        -      "instanceStartSeconds": {
        -        "type": "number"
        -      },
        -      "intermediateStopCount": {
        -        "maximum": 9007199254740991,
        -        "minimum": 0,
        -        "type": "integer"
        -      },
        -      "kind": {
        -        "const": "transit",
        -        "type": "string"
        -      },
        -      "mode": {
        -        "type": "string"
        -      },
        -      "realtimeTimestampSeconds": {
        -        "type": "number"
        -      },
        -      "routeRef": {
        -        "type": "string"
        -      },
        -      "scheduleVersion": {
        -        "type": "string"
        -      },
        -      "scheduledArrivalTime": {
        -        "format": "date-time",
        -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -        "type": "string"
        -      },
        -      "scheduledDepartureTime": {
        -        "format": "date-time",
        -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -        "type": "string"
        -      },
        -      "serviceDate": {
        -        "type": "string"
        -      },
        -      "sources": {
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "ageSeconds": {
        -              "anyOf": [
        -                {
        -                  "minimum": 0,
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "feedId": {
        -              "type": "string"
        -            },
        -            "ingestedAt": {
        -              "format": "date-time",
        -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -              "type": "string"
        -            },
        -            "kind": {
        -              "enum": [
        -                "gtfs_schedule",
        -                "trip_updates",
        -                "vehicle_positions",
        -                "alerts",
        -                "native_api"
        -              ],
        -              "type": "string"
        -            },
        -            "producerTimestamp": {
        -              "anyOf": [
        -                {
        -                  "format": "date-time",
        -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "scheduleVersion": {
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "feedId",
        -            "kind",
        -            "producerTimestamp",
        -            "ingestedAt",
        -            "ageSeconds",
        -            "scheduleVersion"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "status": {
        -        "enum": [
        -          "realtime",
        -          "scheduled_only"
        -        ],
        -        "type": "string"
        -      },
        -      "to": {
        -        "type": "string"
        -      },
        -      "transferRequired": {
        -        "type": "boolean"
        -      },
        -      "tripInstanceRef": {
        -        "type": "string"
        -      },
        -      "tripRef": {
        -        "type": "string"
        -      },
        -      "validatorOutcome": {
        -        "const": "valid",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "from",
        -      "to",
        -      "tripRef",
        -      "tripInstanceRef",
        -      "serviceDate",
        -      "instanceStartSeconds",
        -      "routeRef",
        -      "directionId",
        -      "headsign",
        -      "boardSequence",
        -      "alightSequence",
        -      "scheduleVersion",
        -      "scheduledDepartureTime",
        -      "scheduledArrivalTime",
        -      "departureTime",
        -      "arrivalTime",
        -      "status",
        -      "continuation",
        -      "mode",
        -      "agencyRef",
        -      "intermediateStopCount",
        -      "transferRequired",
        -      "sources",
        -      "validatorOutcome"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "arrivalTime": {
        -        "format": "date-time",
        -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -        "type": "string"
        -      },
        -      "departureTime": {
        -        "format": "date-time",
        -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -        "type": "string"
        -      },
        -      "distanceMetres": {
        -        "type": "number"
        -      },
        -      "estimated": {
        -        "type": "boolean"
        -      },
        -      "from": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "latitude": {
        -                "maximum": 90,
        -                "minimum": -90,
        -                "type": "number"
        -              },
        -              "longitude": {
        -                "maximum": 180,
        -                "minimum": -180,
        -                "type": "number"
        -              }
        -            },
        -            "required": [
        -              "latitude",
        -              "longitude"
        -            ],
        -            "type": "object"
        -          }
        -        ]
        -      },
        -      "kind": {
        -        "const": "walk",
        -        "type": "string"
        -      },
        -      "pathwayId": {
        -        "type": "string"
        -      },
        -      "to": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "latitude": {
        -                "maximum": 90,
        -                "minimum": -90,
        -                "type": "number"
        -              },
        -              "longitude": {
        -                "maximum": 180,
        -                "minimum": -180,
        -                "type": "number"
        -              }
        -            },
        -            "required": [
        -              "latitude",
        -              "longitude"
        -            ],
        -            "type": "object"
        -          }
        -        ]
        -      },
        -      "validatorOutcome": {
        -        "const": "valid",
        -        "type": "string"
        -      },
        -      "verification": {
        -        "enum": [
        -          "pathway",
        -          "unverified"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "from",
        -      "to",
        -      "departureTime",
        -      "arrivalTime",
        -      "distanceMetres",
        -      "verification",
        -      "estimated",
        -      "validatorOutcome"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "agencyRef": {
        +        "type": "string"
        +      },
        +      "alightSequence": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "arrivalTime": {
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +        "type": "string"
        +      },
        +      "boardSequence": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "continuation": {
        +        "type": "boolean"
        +      },
        +      "departureTime": {
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +        "type": "string"
        +      },
        +      "directionId": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "from": {
        +        "type": "string"
        +      },
        +      "headsign": {
        +        "type": "string"
        +      },
        +      "instanceStartSeconds": {
        +        "type": "number"
        +      },
        +      "intermediateStopCount": {
        +        "maximum": 9007199254740991,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "kind": {
        +        "const": "transit",
        +        "type": "string"
        +      },
        +      "mode": {
        +        "type": "string"
        +      },
        +      "realtimeTimestampSeconds": {
        +        "type": "number"
        +      },
        +      "routeRef": {
        +        "type": "string"
        +      },
        +      "scheduleVersion": {
        +        "type": "string"
        +      },
        +      "scheduledArrivalTime": {
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +        "type": "string"
        +      },
        +      "scheduledDepartureTime": {
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +        "type": "string"
        +      },
        +      "serviceDate": {
        +        "type": "string"
        +      },
        +      "sources": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "ageSeconds": {
        +              "anyOf": [
        +                {
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "feedId": {
        +              "type": "string"
        +            },
        +            "ingestedAt": {
        +              "format": "date-time",
        +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +              "type": "string"
        +            },
        +            "kind": {
        +              "enum": [
        +                "gtfs_schedule",
        +                "trip_updates",
        +                "vehicle_positions",
        +                "alerts",
        +                "equipment_outages",
        +                "native_api"
        +              ],
        +              "type": "string"
        +            },
        +            "producerTimestamp": {
        +              "anyOf": [
        +                {
        +                  "format": "date-time",
        +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "scheduleVersion": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "feedId",
        +            "kind",
        +            "producerTimestamp",
        +            "ingestedAt",
        +            "ageSeconds",
        +            "scheduleVersion"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "status": {
        +        "enum": [
        +          "realtime",
        +          "scheduled_only"
        +        ],
        +        "type": "string"
        +      },
        +      "to": {
        +        "type": "string"
        +      },
        +      "transferRequired": {
        +        "type": "boolean"
        +      },
        +      "tripInstanceRef": {
        +        "type": "string"
        +      },
        +      "tripRef": {
        +        "type": "string"
        +      },
        +      "validatorOutcome": {
        +        "const": "valid",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "from",
        +      "to",
        +      "tripRef",
        +      "tripInstanceRef",
        +      "serviceDate",
        +      "instanceStartSeconds",
        +      "routeRef",
        +      "directionId",
        +      "headsign",
        +      "boardSequence",
        +      "alightSequence",
        +      "scheduleVersion",
        +      "scheduledDepartureTime",
        +      "scheduledArrivalTime",
        +      "departureTime",
        +      "arrivalTime",
        +      "status",
        +      "continuation",
        +      "mode",
        +      "agencyRef",
        +      "intermediateStopCount",
        +      "transferRequired",
        +      "sources",
        +      "validatorOutcome"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "arrivalTime": {
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +        "type": "string"
        +      },
        +      "departureTime": {
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +        "type": "string"
        +      },
        +      "distanceMetres": {
        +        "type": "number"
        +      },
        +      "estimated": {
        +        "type": "boolean"
        +      },
        +      "from": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "latitude": {
        +                "maximum": 90,
        +                "minimum": -90,
        +                "type": "number"
        +              },
        +              "longitude": {
        +                "maximum": 180,
        +                "minimum": -180,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "latitude",
        +              "longitude"
        +            ],
        +            "type": "object"
        +          }
        +        ]
        +      },
        +      "kind": {
        +        "const": "walk",
        +        "type": "string"
        +      },
        +      "pathwayId": {
        +        "type": "string"
        +      },
        +      "to": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "latitude": {
        +                "maximum": 90,
        +                "minimum": -90,
        +                "type": "number"
        +              },
        +              "longitude": {
        +                "maximum": 180,
        +                "minimum": -180,
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "latitude",
        +              "longitude"
        +            ],
        +            "type": "object"
        +          }
        +        ]
        +      },
        +      "validatorOutcome": {
        +        "const": "valid",
        +        "type": "string"
        +      },
        +      "verification": {
        +        "enum": [
        +          "pathway",
        +          "unverified"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "from",
        +      "to",
        +      "departureTime",
        +      "arrivalTime",
        +      "distanceMetres",
        +      "verification",
        +      "estimated",
        +      "validatorOutcome"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / reasons / items / enum
        Previous value: -[
        -  "REALTIME_STALE",
        -  "REALTIME_UNAVAILABLE",
        -  "SCHEDULE_EXPIRED",
        -  "SCHEDULE_APPROXIMATE",
        -  "SCHEDULE_REALTIME_MISMATCH",
        -  "TRIP_CANCELED",
        -  "STOP_SKIPPED",
        -  "VALIDATOR_REJECTED",
        -  "COVERAGE_UNAVAILABLE",
        -  "SCOPE_LIMIT_EXCEEDED"
        -]New value: +[
        +  "REALTIME_STALE",
        +  "REALTIME_UNAVAILABLE",
        +  "SCHEDULE_EXPIRED",
        +  "SCHEDULE_APPROXIMATE",
        +  "SCHEDULE_REALTIME_MISMATCH",
        +  "TRIP_CANCELED",
        +  "STOP_SKIPPED",
        +  "VALIDATOR_REJECTED",
        +  "COVERAGE_UNAVAILABLE",
        +  "SCOPE_LIMIT_EXCEEDED",
        +  "ACCESSIBILITY_UNAVAILABLE",
        +  "ENDPOINT_NOT_STEP_FREE"
        +]
      • changedOutput schema / properties / sources / items / properties / kind / enum
        Previous value: -[
        -  "gtfs_schedule",
        -  "trip_updates",
        -  "vehicle_positions",
        -  "alerts",
        -  "native_api"
        -]New value: +[
        +  "gtfs_schedule",
        +  "trip_updates",
        +  "vehicle_positions",
        +  "alerts",
        +  "equipment_outages",
        +  "native_api"
        +]
  9. 2 tool updates
    • Changedget_departures10 fields changed
      • addedInput schema / properties / coverage
        Added value: +{
        +  "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +  "maxLength": 256,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / stop
        Added value: +{
        +  "description": "Stop or station name, with coverage. Give this or stopRef.",
        +  "maxLength": 256,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / stopRef / description
        Added value: +"Exact stop or station reference. Give this or stop."
      • removedInput schema / required
        Removed value: -[
        -  "stopRef"
        -]
      • addedOutput schema / properties / departures / items / properties / routeName
        Added value: +{
        +  "description": "Public route name, e.g. \"1\", \"A\" or \"Red\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / departures / items / properties / stopName
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / departures / items / required
        Previous value: -[
        -  "tripRef",
        -  "serviceDate",
        -  "routeRef",
        -  "agencyRef",
        -  "stopRef",
        -  "stopSequence",
        -  "headsign",
        -  "directionId",
        -  "pickupType",
        -  "status",
        -  "feedId",
        -  "scheduleVersion",
        -  "agencyTimezone",
        -  "tripInstanceRef",
        -  "scheduledTime",
        -  "predictedTime",
        -  "platform",
        -  "scheduleMatch"
        -]New value: +[
        +  "tripRef",
        +  "serviceDate",
        +  "routeRef",
        +  "routeName",
        +  "agencyRef",
        +  "stopRef",
        +  "stopName",
        +  "stopSequence",
        +  "headsign",
        +  "directionId",
        +  "pickupType",
        +  "status",
        +  "feedId",
        +  "scheduleVersion",
        +  "agencyTimezone",
        +  "tripInstanceRef",
        +  "scheduledTime",
        +  "predictedTime",
        +  "platform",
        +  "scheduleMatch"
        +]
      • addedOutput schema / properties / frequencyWindows / items / properties / routeName
        Added value: +{
        +  "description": "Public route name, e.g. \"1\", \"A\" or \"Red\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / frequencyWindows / items / properties / stopName
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / frequencyWindows / items / required
        Previous value: -[
        -  "tripRef",
        -  "serviceDate",
        -  "routeRef",
        -  "agencyRef",
        -  "stopRef",
        -  "stopSequence",
        -  "headsign",
        -  "directionId",
        -  "pickupType",
        -  "status",
        -  "feedId",
        -  "scheduleVersion",
        -  "agencyTimezone",
        -  "tripTemplateRef",
        -  "startTime",
        -  "endTime",
        -  "overlapStartTime",
        -  "overlapEndTime",
        -  "headwaySeconds",
        -  "exactTimes"
        -]New value: +[
        +  "tripRef",
        +  "serviceDate",
        +  "routeRef",
        +  "routeName",
        +  "agencyRef",
        +  "stopRef",
        +  "stopName",
        +  "stopSequence",
        +  "headsign",
        +  "directionId",
        +  "pickupType",
        +  "status",
        +  "feedId",
        +  "scheduleVersion",
        +  "agencyTimezone",
        +  "tripTemplateRef",
        +  "startTime",
        +  "endTime",
        +  "overlapStartTime",
        +  "overlapEndTime",
        +  "headwaySeconds",
        +  "exactTimes"
        +]
    • Changedget_service_status6 fields changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "coverage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "not": {}
        -      },
        -      "itinerary": {
        -        "not": {}
        -      },
        -      "ref": {
        -        "maxLength": 256,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ref"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "coverage": {
        -        "not": {}
        -      },
        -      "itinerary": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "arrivalTime": {
        -            "format": "date-time",
        -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -            "type": "string"
        -          },
        -          "artifactVersion": {
        -            "type": "string"
        -          },
        -          "coverageId": {
        -            "type": "string"
        -          },
        -          "departAt": {
        -            "format": "date-time",
        -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -            "type": "string"
        -          },
        -          "departureTime": {
        -            "format": "date-time",
        -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -            "type": "string"
        -          },
        -          "destination": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "latitude": {
        -                    "maximum": 90,
        -                    "minimum": -90,
        -                    "type": "number"
        -                  },
        -                  "longitude": {
        -                    "maximum": 180,
        -                    "minimum": -180,
        -                    "type": "number"
        -                  }
        -                },
        -                "required": [
        -                  "latitude",
        -                  "longitude"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          },
        -          "legs": {
        -            "items": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "agencyRef": {
        -                      "type": "string"
        -                    },
        -                    "alightSequence": {
        -                      "maximum": 9007199254740991,
        -                      "minimum": -9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "arrivalTime": {
        -                      "format": "date-time",
        -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                      "type": "string"
        -                    },
        -                    "boardSequence": {
        -                      "maximum": 9007199254740991,
        -                      "minimum": -9007199254740991,
        -                      "type": "integer"
        -                    },
        -                    "continuation": {
        -                      "type": "boolean"
        -                    },
        -                    "departureTime": {
        -                      "format": "date-time",
        -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                      "type": "string"
        -                    },
        -                    "directionId": {
        -                      "anyOf": [
        -                        {
        -                          "maximum": 9007199254740991,
        -                          "minimum": -9007199254740991,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "from": {
        -                      "type": "string"
        -                    },
        -                    "headsign": {
        -                      "type": "string"
        -                    },
        -                    "instanceStartSeconds": {
        -                      "type": "number"
        -                    },
        -                    "intermediateStopCount": {
        -                      "maximum": 9007199254740991,
        -                      "minimum": 0,
        -                      "type": "integer"
        -                    },
        -                    "kind": {
        -                      "const": "transit",
        -                      "type": "string"
        -                    },
        -                    "mode": {
        -                      "type": "string"
        -                    },
        -                    "realtimeTimestampSeconds": {
        -                      "type": "number"
        -                    },
        -                    "routeRef": {
        -                      "type": "string"
        -                    },
        -                    "scheduleVersion": {
        -                      "type": "string"
        -                    },
        -                    "scheduledArrivalTime": {
        -                      "format": "date-time",
        -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                      "type": "string"
        -                    },
        -                    "scheduledDepartureTime": {
        -                      "format": "date-time",
        -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                      "type": "string"
        -                    },
        -                    "serviceDate": {
        -                      "type": "string"
        -                    },
        -                    "sources": {
        -                      "items": {
        -                        "additionalProperties": false,
        -                        "properties": {
        -                          "ageSeconds": {
        -                            "anyOf": [
        -                              {
        -                                "minimum": 0,
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "feedId": {
        -                            "type": "string"
        -                          },
        -                          "ingestedAt": {
        -                            "format": "date-time",
        -                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                            "type": "string"
        -                          },
        -                          "kind": {
        -                            "enum": [
        -                              "gtfs_schedule",
        -                              "trip_updates",
        -                              "vehicle_positions",
        -                              "alerts",
        -                              "native_api"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "producerTimestamp": {
        -                            "anyOf": [
        -                              {
        -                                "format": "date-time",
        -                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "scheduleVersion": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "feedId",
        -                          "kind",
        -                          "producerTimestamp",
        -                          "ingestedAt",
        -                          "ageSeconds",
        -                          "scheduleVersion"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "status": {
        -                      "enum": [
        -                        "realtime",
        -                        "scheduled_only"
        -                      ],
        -                      "type": "string"
        -                    },
        -                    "to": {
        -                      "type": "string"
        -                    },
        -                    "transferRequired": {
        -                      "type": "boolean"
        -                    },
        -                    "tripInstanceRef": {
        -                      "type": "string"
        -                    },
        -                    "tripRef": {
        -                      "type": "string"
        -                    },
        -                    "validatorOutcome": {
        -                      "const": "valid",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "kind",
        -                    "from",
        -                    "to",
        -                    "tripRef",
        -                    "tripInstanceRef",
        -                    "serviceDate",
        -                    "instanceStartSeconds",
        -                    "routeRef",
        -                    "directionId",
        -                    "headsign",
        -                    "boardSequence",
        -                    "alightSequence",
        -                    "scheduleVersion",
        -                    "scheduledDepartureTime",
        -                    "scheduledArrivalTime",
        -                    "departureTime",
        -                    "arrivalTime",
        -                    "status",
        -                    "continuation",
        -                    "mode",
        -                    "agencyRef",
        -                    "intermediateStopCount",
        -                    "transferRequired",
        -                    "sources",
        -                    "validatorOutcome"
        -                  ],
        -                  "type": "object"
        -                },
        -                {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "arrivalTime": {
        -                      "format": "date-time",
        -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                      "type": "string"
        -                    },
        -                    "departureTime": {
        -                      "format": "date-time",
        -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -                      "type": "string"
        -                    },
        -                    "distanceMetres": {
        -                      "type": "number"
        -                    },
        -                    "estimated": {
        -                      "type": "boolean"
        -                    },
        -                    "from": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "additionalProperties": false,
        -                          "properties": {
        -                            "latitude": {
        -                              "maximum": 90,
        -                              "minimum": -90,
        -                              "type": "number"
        -                            },
        -                            "longitude": {
        -                              "maximum": 180,
        -                              "minimum": -180,
        -                              "type": "number"
        -                            }
        -                          },
        -                          "required": [
        -                            "latitude",
        -                            "longitude"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      ]
        -                    },
        -                    "kind": {
        -                      "const": "walk",
        -                      "type": "string"
        -                    },
        -                    "pathwayId": {
        -                      "type": "string"
        -                    },
        -                    "to": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "additionalProperties": false,
        -                          "properties": {
        -                            "latitude": {
        -                              "maximum": 90,
        -                              "minimum": -90,
        -                              "type": "number"
        -                            },
        -                            "longitude": {
        -                              "maximum": 180,
        -                              "minimum": -180,
        -                              "type": "number"
        -                            }
        -                          },
        -                          "required": [
        -                            "latitude",
        -                            "longitude"
        -                          ],
        -                          "type": "object"
        -                        }
        -                      ]
        -                    },
        -                    "validatorOutcome": {
        -                      "const": "valid",
        -                      "type": "string"
        -                    },
        -                    "verification": {
        -                      "enum": [
        -                        "pathway",
        -                        "unverified"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "kind",
        -                    "from",
        -                    "to",
        -                    "departureTime",
        -                    "arrivalTime",
        -                    "distanceMetres",
        -                    "verification",
        -                    "estimated",
        -                    "validatorOutcome"
        -                  ],
        -                  "type": "object"
        -                }
        -              ]
        -            },
        -            "type": "array"
        -          },
        -          "maxTransfers": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "maxWalkMetres": {
        -            "type": "number"
        -          },
        -          "origin": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "latitude": {
        -                    "maximum": 90,
        -                    "minimum": -90,
        -                    "type": "number"
        -                  },
        -                  "longitude": {
        -                    "maximum": 180,
        -                    "minimum": -180,
        -                    "type": "number"
        -                  }
        -                },
        -                "required": [
        -                  "latitude",
        -                  "longitude"
        -                ],
        -                "type": "object"
        -              }
        -            ]
        -          },
        -          "status": {
        -            "enum": [
        -              "realtime",
        -              "scheduled_only"
        -            ],
        -            "type": "string"
        -          },
        -          "transfers": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          "walkingMetres": {
        -            "type": "number"
        -          },
        -          "windowSeconds": {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "coverageId",
        -          "artifactVersion",
        -          "origin",
        -          "destination",
        -          "departAt",
        -          "windowSeconds",
        -          "maxWalkMetres",
        -          "maxTransfers",
        -          "departureTime",
        -          "arrivalTime",
        -          "walkingMetres",
        -          "transfers",
        -          "status",
        -          "legs"
        -        ],
        -        "type": "object"
        -      },
        -      "ref": {
        -        "not": {}
        -      }
        -    },
        -    "required": [
        -      "itinerary"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "description": "Runtime coverage name or identifier; use find_transit to inspect availability.",
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "itinerary": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "coverage"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "not": {}
        +      },
        +      "itinerary": {
        +        "not": {}
        +      },
        +      "ref": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "ref"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "coverage": {
        +        "not": {}
        +      },
        +      "itinerary": {
        +        "additionalProperties": {},
        +        "description": "An itinerary exactly as plan_trip returned it; validated strictly against that contract.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "ref": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "itinerary"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedOutput schema / properties / alerts / items / properties / selectorCount
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / alerts / items / properties / selectors / description
        Added value: +"At most 20; selectorCount is the full number."
      • addedOutput schema / properties / alerts / items / properties / stopCount
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / alerts / items / properties / stopIds / description
        Added value: +"At most 20; stopCount is the full number."
      • changedOutput schema / properties / alerts / items / required
        Previous value: -[
        -  "id",
        -  "agencyText",
        -  "routeIds",
        -  "stopIds",
        -  "selectors",
        -  "stale",
        -  "activePeriods"
        -]New value: +[
        +  "id",
        +  "agencyText",
        +  "routeIds",
        +  "stopIds",
        +  "selectors",
        +  "selectorCount",
        +  "stopCount",
        +  "stale",
        +  "activePeriods"
        +]
  10. 1 tool update
    • Changedget_departures10 fields changed
      • addedOutput schema / properties / departures / items / properties / scheduleMatch
        Added value: +{
        +  "enum": [
        +    "matched",
        +    "unscheduled_call",
        +    "unmatched_trip"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / departures / items / properties / scheduledTime / anyOf
        Added value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / departures / items / properties / scheduledTime / format
        Removed value: -"date-time"
      • removedOutput schema / properties / departures / items / properties / scheduledTime / pattern
        Removed value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
      • removedOutput schema / properties / departures / items / properties / scheduledTime / type
        Removed value: -"string"
      • addedOutput schema / properties / departures / items / properties / stopSequence / anyOf
        Added value: +[
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": -9007199254740991,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / departures / items / properties / stopSequence / maximum
        Removed value: -9007199254740991
      • removedOutput schema / properties / departures / items / properties / stopSequence / minimum
        Removed value: --9007199254740991
      • removedOutput schema / properties / departures / items / properties / stopSequence / type
        Removed value: -"integer"
      • changedOutput schema / properties / departures / items / required
        Previous value: -[
        -  "tripRef",
        -  "serviceDate",
        -  "routeRef",
        -  "agencyRef",
        -  "stopRef",
        -  "stopSequence",
        -  "headsign",
        -  "directionId",
        -  "pickupType",
        -  "status",
        -  "feedId",
        -  "scheduleVersion",
        -  "agencyTimezone",
        -  "tripInstanceRef",
        -  "scheduledTime",
        -  "predictedTime",
        -  "platform"
        -]New value: +[
        +  "tripRef",
        +  "serviceDate",
        +  "routeRef",
        +  "agencyRef",
        +  "stopRef",
        +  "stopSequence",
        +  "headsign",
        +  "directionId",
        +  "pickupType",
        +  "status",
        +  "feedId",
        +  "scheduleVersion",
        +  "agencyTimezone",
        +  "tripInstanceRef",
        +  "scheduledTime",
        +  "predictedTime",
        +  "platform",
        +  "scheduleMatch"
        +]
  11. 10 tool updates
    • Addedfind_transit
    • Addedget_departures
    • Addedget_service_status
    • Removedget_sfbay_incidents
    • Removedget_sfbay_routes
    • Removedget_sfbay_station_predictions
    • Removedget_vehicle_positions
    • Addedget_vehicle_status
    • Addedplan_trip
    • Removedsearch_sfbay_stations
  12. 18 tool updates
    • First observedget_all_stations
    • First observedget_bus_positions
    • First observedget_bus_predictions
    • First observedget_bus_routes
    • First observedget_bus_stops
    • First observedget_elevator_incidents
    • First observedget_incidents
    • First observedget_route_info
    • First observedget_sfbay_incidents
    • First observedget_sfbay_routes
    • First observedget_sfbay_station_predictions
    • First observedget_station_predictions
    • First observedget_station_transfers
    • First observedget_stations_by_line
    • First observedget_train_positions
    • First observedget_vehicle_positions
    • First observedsearch_sfbay_stations
    • First observedsearch_stations

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.