Sail
Server Details
Search places, compare ride-hailing options, and plan trotro minibus journeys.
- Status
- Healthy
- Uptime
- 100.0% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
plan_trotro_route functionally duplicates plan_public_transport (both handle Ghana trotro), and plan_trip overlaps with both by bundling public transport plus ride comparison. The descriptions mitigate this by flagging plan_trip as default and telling users to prefer plan_public_transport, but the boundaries remain blurry.
All six tools follow a clean verb_noun snake_case pattern: compare_rides, plan_public_transport, plan_trip, plan_trotro_route, resolve_place, search_places. No mixing of conventions.
Six tools is well-scoped for a trip-planning server covering place search, resolution, and a few planning modes. Each tool maps to a distinct step in the workflow.
search_places and resolve_place cover the location-input pipeline, and the planning tools cover rides, public transport, and multimodal comparison. Minor gap: no way to fetch live transit status or save/reuse places, but the core planning lifecycle is intact.
Available Tools
6 toolscompare_ridesCompare ridesBRead-onlyIdempotentInspect
Compare current ride-hailing prices and pickup times from the providers available through Sail.
| Name | Required | Description | Default |
|---|---|---|---|
| pickup | Yes | Resolved pickup place | |
| destination | Yes | Resolved destination place |
Output Schema
| Name | Required | Description |
|---|---|---|
| options | Yes | |
| complete | Yes | |
| optionCounts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context via 'current' (indicating live, time-sensitive pricing) and 'through Sail' (provider scope), but does not disclose ordering, currency, or failure handling. With annotations this is an acceptable level of transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly-worded sentence that front-loads the action and includes the resource, scope, and time-sensitivity. There is no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only comparison tool with rich input schema, annotations, and an output schema, the description provides sufficient context about what the tool does and what data it returns. Minor gaps remain around when to use it versus plan_trip and how the resolved places should be obtained, but these are largely inferable from sibling names and schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, documenting lat/lng ranges, placeId provenance, and the required pickup/destination objects. The description adds no additional parameter-level detail, but none is needed given the thorough schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Compare'), a specific resource ('current ride-hailing prices and pickup times'), and a scope ('providers available through Sail'). It does not explicitly contrast itself with sibling tools like plan_trip or plan_trotro_route, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when comparing ride-hailing options—but gives no explicit guidance on when to choose it over siblings, nor does it mention exclusions or prerequisites. An agent must infer the appropriate usage from the name and the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_public_transportPlan public transportARead-onlyIdempotentInspect
Plan public transport with fares, walking legs, transfers, and boarding instructions: trotro in Ghana, or buses leaving now in England, Scotland and Wales. Bus times come from published timetables, not live tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| pickup | Yes | Pickup coordinates | |
| destination | Yes | Destination coordinates |
Output Schema
| Name | Required | Description |
|---|---|---|
| routes | Yes | |
| network | Yes | trotro in Ghana, or bus in Great Britain |
| complete | Yes | |
| skipNote | No | |
| routeCounts | Yes | |
| routesRequiringRideConnection | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the bar is low. The description adds genuinely new context beyond that: fares/walking legs/transfers/boarding instructions are returned, and bus times derive from published timetables rather than live tracking, which sets a freshness expectation the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler; the capability and mode/region scope are front-loaded and the data-source caveat is placed last as a qualifier. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description need not describe return values, and it correctly focuses on modes, regions, and the timetable-vs-live caveat. The only meaningful gap is the absence of any routing guidance relative to the sibling planning tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with nested pickup/destination lat-lng objects fully documented in the schema, so the baseline of 3 applies. The description adds no parameter-level meaning (e.g., that coordinates are the only inputs and no departure time is accepted), so nothing pushes it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Plan public transport') and enumerates the output content (fares, walking legs, transfers, boarding instructions) plus supported modes/regions. It doesn't explicitly contrast itself with the overlapping sibling plan_trotro_route, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Geographic scope is implied as a usage condition ('trotro in Ghana, or buses ... in England, Scotland and Wales'), and the 'not live tracking' caveat hints at when results are trustworthy. However, it never names an alternative tool or states when to pick a sibling such as plan_trotro_route or plan_trip instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_tripPlan a tripBRead-onlyIdempotentInspect
Compare ride-hailing with public transport: trotro in Ghana, or buses leaving now in England, Scotland and Wales. This is the default tool for multimodal trip planning.
| Name | Required | Description | Default |
|---|---|---|---|
| pickup | Yes | Resolved pickup place | |
| destination | Yes | Resolved destination place |
Output Schema
| Name | Required | Description |
|---|---|---|
| bus | No | Bus options, present only for trips within England, Scotland and Wales |
| rides | Yes | |
| status | Yes | |
| trotro | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered without the description. The description usefully discloses the geographic coverage (Ghana, England, Scotland, Wales) and that it performs a comparison rather than a single-mode lookup, but says nothing about what happens outside those regions or about latency/rate limits on a live open-world query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the capability statement comes first and the routing hint second. The first sentence is a somewhat fragmentary list, but it earns its place by conveying coverage and mode scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover safety. The remaining gap is workflow: the schema hints that placeId comes from search_places (implying a resolve-first prerequisite), and the description never mentions that places must be resolved beforehand or what the coverage boundaries mean for a query outside Ghana/UK.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both required params (pickup, destination) are fully documented with lat/lng bounds, name/address, and a placeId cross-reference to search_places. The description adds no parameter-level meaning of its own, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete function (compare ride-hailing against public transport for a trip) and names the transport modes and geographies (trotro in Ghana, buses in England/Scotland/Wales), which distinguishes it from resolve_place and search_places. It also self-labels as 'the default tool for multimodal trip planning', which separates it from plan_public_transport and plan_trotro_route, though the overlap with compare_rides is never resolved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'This is the default tool for multimodal trip planning' is real routing guidance, telling the agent to prefer this tool in the multimodal case. However, it never names the alternatives (compare_rides, plan_public_transport, plan_trotro_route) or states when NOT to use it, so the agent must infer the boundary from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_trotro_routePlan a trotro routeARead-onlyIdempotentInspect
Plan trotro journeys in Ghana, including fares, walking legs, transfers, and boarding instructions. Prefer plan_public_transport, which also covers buses in Great Britain.
| Name | Required | Description | Default |
|---|---|---|---|
| pickup | Yes | Pickup coordinates | |
| destination | Yes | Destination coordinates |
Output Schema
| Name | Required | Description |
|---|---|---|
| routes | Yes | |
| complete | Yes | |
| skipNote | No | |
| routeCounts | Yes | |
| routesRequiringRideConnection | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is covered. The description adds that results include fares, transfers, and boarding instructions, which is useful context, but since an output schema exists this overlaps structured data and no limits (coverage boundaries, data freshness) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core capability and coverage region are front-loaded, and the sibling routing pointer follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and annotations covering the safety profile, the description's job is mainly scope and routing, both of which are handled. Region coverage and result contents are stated, though no note on data currency or service area boundaries is given.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both nested pickup/destination objects fully documented including lat/lng ranges, so the schema carries the semantics. The description adds nothing about parameter format or constraints, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Plan) and resource (trotro journeys) with concrete scope: Ghana, and outputs covering fares, walking legs, transfers, and boarding instructions. It explicitly names and contrasts the closest sibling, plan_public_transport, so an agent can route between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (plan_public_transport) and the condition that differentiates it (covers buses in Great Britain), implying this tool is the choice for Ghana trotro journeys. It stops short of explicitly stating when-not to use this tool or listing other siblings like plan_trip, so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_placeResolve placeARead-onlyIdempotentInspect
Resolve a place ID from search_places to an exact name, address, and coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| placeId | Yes | Place ID returned by search_places |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the resolution output contents but does not disclose error handling or behavior for invalid IDs; this is minor given the concise scope and strong annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and input, then immediately states the output fields. There is no filler, redundancy, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, an output schema available, and annotations covering side effects, the description fully covers the input origin, purpose, and output shape. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the placeId property is already documented as 'Place ID returned by search_places'. The description repeats this origin without adding additional parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Resolve') with a clear resource ('place ID from search_places') and enumerates the output (exact name, address, coordinates). It clearly differentiates this from sibling tools like search_places, which finds candidates, and trip-planning tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from search_places' explicitly establishes the input source and implies the intended workflow: call search_places first, then resolve a selected ID. It does not explicitly state when not to use it or name alternatives, but the contextual chain is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_placesSearch placesARead-onlyIdempotentInspect
Search for pickup or destination places. Use resolve_place on the selected result before planning a trip.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | Coordinates used to bias nearby results | |
| query | Yes | Place name or address | |
| countryCode | No | Country to search: "gh" for Ghana, or "gb" for England, Scotland and Wales | gh |
| radiusMeters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| places | Yes | |
| complete | Yes | |
| placeCounts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety semantics are covered. The description adds the workflow constraint that results must be resolved before planning, but says nothing about result limits, ranking, or how 'near'/radius influence results. With annotations carrying the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the core purpose is front-loaded ahead of the follow-up instruction. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers both the purpose and the required next step. Missing only edge-case detail (e.g., how to handle no results, whether countryCode defaults constrain scope), which is minor for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema already documents query, near coordinates, countryCode values and lat/lng bounds. The description only hints that results can be pickup or destination places and adds no syntax or format detail for any parameter. Baseline 3 is correct where structured fields do the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Search for pickup or destination places.' That is clear and distinguishes it from routing/planning siblings. It stops short of explicitly contrasting with other search-like tools, but the domain is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit downstream guidance: 'Use resolve_place on the selected result before planning a trip.' This routes the agent through the right pipeline step. It does not state when this tool should NOT be used versus siblings like plan_trip or compare_rides, so it is clear context rather than full when/when-not coverage.
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.
4 tool updates
- Added
plan_public_transport - Changed
plan_trip2 fields changed- added
Output schema / properties / busAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "complete": { + "type": "boolean" + }, + "routeCounts": { + "additionalProperties": false, + "properties": { + "direct": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "rideConnection": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + } + }, + "required": [ + "direct", + "rideConnection" + ], + "type": "object" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "arrivalTime": { + "type": "string" + }, + "complete": { + "type": "boolean" + }, + "currency": { + "type": "string" + }, + "departureTime": { + "type": "string" + }, + "destinationStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "fareRange": { + "additionalProperties": false, + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "id": { + "type": "string" + }, + "originStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "segmentCounts": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "segments": { + "items": { + "additionalProperties": false, + "properties": { + "alightAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "arrivalTime": { + "description": "Timetabled bus arrival, ISO 8601", + "type": "string" + }, + "boardAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "currency": { + "type": "string" + }, + "departureTime": { + "description": "Timetabled bus departure, ISO 8601", + "type": "string" + }, + "fare": { + "type": "number" + }, + "fareBasis": { + "description": "How the bus fare was set: the operator's published single, a local flat fare, an estimate at England's national fare cap, or unavailable", + "enum": [ + "operator-published", + "local-flat-fare", + "national-fare-cap-estimate", + "unavailable" + ], + "type": "string" + }, + "fareMin": { + "description": "Lowest listed bus fare when the operator lists several", + "type": "number" + }, + "routeDestination": { + "type": "string" + }, + "routeName": { + "type": "string" + } + }, + "required": [ + "boardAt", + "alightAt" + ], + "type": "object" + }, + "type": "array" + }, + "timeZone": { + "type": "string" + }, + "totalFare": { + "type": "number" + }, + "transferCount": { + "type": "number" + }, + "walkingDistanceFromDestinationKm": { + "type": "number" + }, + "walkingDistanceToPickupKm": { + "type": "number" + }, + "walkingUncertaintyNote": { + "type": "string" + } + }, + "required": [ + "originStop", + "destinationStop", + "segments", + "segmentCounts", + "complete" + ], + "type": "object" + }, + "type": "array" + }, + "routesRequiringRideConnection": { + "items": { + "additionalProperties": false, + "properties": { + "arrivalTime": { + "type": "string" + }, + "complete": { + "type": "boolean" + }, + "currency": { + "type": "string" + }, + "departureTime": { + "type": "string" + }, + "destinationStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "fareRange": { + "additionalProperties": false, + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "id": { + "type": "string" + }, + "originStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "segmentCounts": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "segments": { + "items": { + "additionalProperties": false, + "properties": { + "alightAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "arrivalTime": { + "description": "Timetabled bus arrival, ISO 8601", + "type": "string" + }, + "boardAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "currency": { + "type": "string" + }, + "departureTime": { + "description": "Timetabled bus departure, ISO 8601", + "type": "string" + }, + "fare": { + "type": "number" + }, + "fareBasis": { + "description": "How the bus fare was set: the operator's published single, a local flat fare, an estimate at England's national fare cap, or unavailable", + "enum": [ + "operator-published", + "local-flat-fare", + "national-fare-cap-estimate", + "unavailable" + ], + "type": "string" + }, + "fareMin": { + "description": "Lowest listed bus fare when the operator lists several", + "type": "number" + }, + "routeDestination": { + "type": "string" + }, + "routeName": { + "type": "string" + } + }, + "required": [ + "boardAt", + "alightAt" + ], + "type": "object" + }, + "type": "array" + }, + "timeZone": { + "type": "string" + }, + "totalFare": { + "type": "number" + }, + "transferCount": { + "type": "number" + }, + "walkingDistanceFromDestinationKm": { + "type": "number" + }, + "walkingDistanceToPickupKm": { + "type": "number" + }, + "walkingUncertaintyNote": { + "type": "string" + } + }, + "required": [ + "originStop", + "destinationStop", + "segments", + "segmentCounts", + "complete" + ], + "type": "object" + }, + "type": "array" + }, + "skipNote": { + "type": "string" + } + }, + "required": [ + "routes", + "routesRequiringRideConnection", + "routeCounts", + "complete" + ], + "type": "object" + }, + "status": { + "enum": [ + "complete", + "partial" + ], + "type": "string" + } + }, + "required": [ + "status", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "enum": [ + "cancelled", + "timeout", + "unavailable" + ], + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "status": { + "const": "failed", + "type": "string" + } + }, + "required": [ + "status", + "error" + ], + "type": "object" + } + ], + "description": "Bus options, present only for trips within England, Scotland and Wales" +} - changed
Output schema / properties / trotro / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "complete": { - "type": "boolean" - }, - "routeCounts": { - "additionalProperties": false, - "properties": { - "direct": { - "additionalProperties": false, - "properties": { - "returned": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "total": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "total", - "returned", - "truncated" - ], - "type": "object" - }, - "rideConnection": { - "additionalProperties": false, - "properties": { - "returned": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "total": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "total", - "returned", - "truncated" - ], - "type": "object" - } - }, - "required": [ - "direct", - "rideConnection" - ], - "type": "object" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "complete": { - "type": "boolean" - }, - "currency": { - "type": "string" - }, - "destinationStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "originStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "segmentCounts": { - "additionalProperties": false, - "properties": { - "returned": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "total": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "total", - "returned", - "truncated" - ], - "type": "object" - }, - "segments": { - "items": { - "additionalProperties": false, - "properties": { - "alightAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "boardAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "currency": { - "type": "string" - }, - "fare": { - "type": "number" - }, - "routeDestination": { - "type": "string" - }, - "routeName": { - "type": "string" - } - }, - "required": [ - "boardAt", - "alightAt" - ], - "type": "object" - }, - "type": "array" - }, - "totalFare": { - "type": "number" - }, - "transferCount": { - "type": "number" - }, - "walkingDistanceFromDestinationKm": { - "type": "number" - }, - "walkingDistanceToPickupKm": { - "type": "number" - }, - "walkingUncertaintyNote": { - "type": "string" - } - }, - "required": [ - "originStop", - "destinationStop", - "segments", - "segmentCounts", - "complete" - ], - "type": "object" - }, - "type": "array" - }, - "routesRequiringRideConnection": { - "items": { - "additionalProperties": false, - "properties": { - "complete": { - "type": "boolean" - }, - "currency": { - "type": "string" - }, - "destinationStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "originStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "segmentCounts": { - "additionalProperties": false, - "properties": { - "returned": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "total": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "total", - "returned", - "truncated" - ], - "type": "object" - }, - "segments": { - "items": { - "additionalProperties": false, - "properties": { - "alightAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "boardAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "currency": { - "type": "string" - }, - "fare": { - "type": "number" - }, - "routeDestination": { - "type": "string" - }, - "routeName": { - "type": "string" - } - }, - "required": [ - "boardAt", - "alightAt" - ], - "type": "object" - }, - "type": "array" - }, - "totalFare": { - "type": "number" - }, - "transferCount": { - "type": "number" - }, - "walkingDistanceFromDestinationKm": { - "type": "number" - }, - "walkingDistanceToPickupKm": { - "type": "number" - }, - "walkingUncertaintyNote": { - "type": "string" - } - }, - "required": [ - "originStop", - "destinationStop", - "segments", - "segmentCounts", - "complete" - ], - "type": "object" - }, - "type": "array" - }, - "skipNote": { - "type": "string" - } - }, - "required": [ - "routes", - "routesRequiringRideConnection", - "routeCounts", - "complete" - ], - "type": "object" - }, - "status": { - "enum": [ - "complete", - "partial" - ], - "type": "string" - } - }, - "required": [ - "status", - "data" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "error": { - "additionalProperties": false, - "properties": { - "code": { - "enum": [ - "cancelled", - "timeout", - "unavailable" - ], - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "code", - "message" - ], - "type": "object" - }, - "status": { - "const": "failed", - "type": "string" - } - }, - "required": [ - "status", - "error" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "complete": { + "type": "boolean" + }, + "routeCounts": { + "additionalProperties": false, + "properties": { + "direct": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "rideConnection": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + } + }, + "required": [ + "direct", + "rideConnection" + ], + "type": "object" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "arrivalTime": { + "type": "string" + }, + "complete": { + "type": "boolean" + }, + "currency": { + "type": "string" + }, + "departureTime": { + "type": "string" + }, + "destinationStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "fareRange": { + "additionalProperties": false, + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "id": { + "type": "string" + }, + "originStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "segmentCounts": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "segments": { + "items": { + "additionalProperties": false, + "properties": { + "alightAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "arrivalTime": { + "description": "Timetabled bus arrival, ISO 8601", + "type": "string" + }, + "boardAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "currency": { + "type": "string" + }, + "departureTime": { + "description": "Timetabled bus departure, ISO 8601", + "type": "string" + }, + "fare": { + "type": "number" + }, + "fareBasis": { + "description": "How the bus fare was set: the operator's published single, a local flat fare, an estimate at England's national fare cap, or unavailable", + "enum": [ + "operator-published", + "local-flat-fare", + "national-fare-cap-estimate", + "unavailable" + ], + "type": "string" + }, + "fareMin": { + "description": "Lowest listed bus fare when the operator lists several", + "type": "number" + }, + "routeDestination": { + "type": "string" + }, + "routeName": { + "type": "string" + } + }, + "required": [ + "boardAt", + "alightAt" + ], + "type": "object" + }, + "type": "array" + }, + "timeZone": { + "type": "string" + }, + "totalFare": { + "type": "number" + }, + "transferCount": { + "type": "number" + }, + "walkingDistanceFromDestinationKm": { + "type": "number" + }, + "walkingDistanceToPickupKm": { + "type": "number" + }, + "walkingUncertaintyNote": { + "type": "string" + } + }, + "required": [ + "originStop", + "destinationStop", + "segments", + "segmentCounts", + "complete" + ], + "type": "object" + }, + "type": "array" + }, + "routesRequiringRideConnection": { + "items": { + "additionalProperties": false, + "properties": { + "arrivalTime": { + "type": "string" + }, + "complete": { + "type": "boolean" + }, + "currency": { + "type": "string" + }, + "departureTime": { + "type": "string" + }, + "destinationStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "fareRange": { + "additionalProperties": false, + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "id": { + "type": "string" + }, + "originStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "segmentCounts": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "segments": { + "items": { + "additionalProperties": false, + "properties": { + "alightAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "arrivalTime": { + "description": "Timetabled bus arrival, ISO 8601", + "type": "string" + }, + "boardAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "currency": { + "type": "string" + }, + "departureTime": { + "description": "Timetabled bus departure, ISO 8601", + "type": "string" + }, + "fare": { + "type": "number" + }, + "fareBasis": { + "description": "How the bus fare was set: the operator's published single, a local flat fare, an estimate at England's national fare cap, or unavailable", + "enum": [ + "operator-published", + "local-flat-fare", + "national-fare-cap-estimate", + "unavailable" + ], + "type": "string" + }, + "fareMin": { + "description": "Lowest listed bus fare when the operator lists several", + "type": "number" + }, + "routeDestination": { + "type": "string" + }, + "routeName": { + "type": "string" + } + }, + "required": [ + "boardAt", + "alightAt" + ], + "type": "object" + }, + "type": "array" + }, + "timeZone": { + "type": "string" + }, + "totalFare": { + "type": "number" + }, + "transferCount": { + "type": "number" + }, + "walkingDistanceFromDestinationKm": { + "type": "number" + }, + "walkingDistanceToPickupKm": { + "type": "number" + }, + "walkingUncertaintyNote": { + "type": "string" + } + }, + "required": [ + "originStop", + "destinationStop", + "segments", + "segmentCounts", + "complete" + ], + "type": "object" + }, + "type": "array" + }, + "skipNote": { + "type": "string" + } + }, + "required": [ + "routes", + "routesRequiringRideConnection", + "routeCounts", + "complete" + ], + "type": "object" + }, + "status": { + "enum": [ + "complete", + "partial" + ], + "type": "string" + } + }, + "required": [ + "status", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "enum": [ + "cancelled", + "timeout", + "unavailable" + ], + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "status": { + "const": "failed", + "type": "string" + } + }, + "required": [ + "status", + "error" + ], + "type": "object" + } +]
- Changed
plan_trotro_route16 fields changed- added
Output schema / properties / routes / items / properties / arrivalTimeAdded value: +{ + "type": "string" +} - added
Output schema / properties / routes / items / properties / departureTimeAdded value: +{ + "type": "string" +} - added
Output schema / properties / routes / items / properties / fareRangeAdded value: +{ + "additionalProperties": false, + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" +} - added
Output schema / properties / routes / items / properties / segments / items / properties / arrivalTimeAdded value: +{ + "description": "Timetabled bus arrival, ISO 8601", + "type": "string" +} - added
Output schema / properties / routes / items / properties / segments / items / properties / departureTimeAdded value: +{ + "description": "Timetabled bus departure, ISO 8601", + "type": "string" +} - added
Output schema / properties / routes / items / properties / segments / items / properties / fareBasisAdded value: +{ + "description": "How the bus fare was set: the operator's published single, a local flat fare, an estimate at England's national fare cap, or unavailable", + "enum": [ + "operator-published", + "local-flat-fare", + "national-fare-cap-estimate", + "unavailable" + ], + "type": "string" +} - added
Output schema / properties / routes / items / properties / segments / items / properties / fareMinAdded value: +{ + "description": "Lowest listed bus fare when the operator lists several", + "type": "number" +} - added
Output schema / properties / routes / items / properties / timeZoneAdded value: +{ + "type": "string" +} - added
Output schema / properties / routesRequiringRideConnection / items / properties / arrivalTimeAdded value: +{ + "type": "string" +} - added
Output schema / properties / routesRequiringRideConnection / items / properties / departureTimeAdded value: +{ + "type": "string" +} - added
Output schema / properties / routesRequiringRideConnection / items / properties / fareRangeAdded value: +{ + "additionalProperties": false, + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" +} - added
Output schema / properties / routesRequiringRideConnection / items / properties / segments / items / properties / arrivalTimeAdded value: +{ + "description": "Timetabled bus arrival, ISO 8601", + "type": "string" +} - added
Output schema / properties / routesRequiringRideConnection / items / properties / segments / items / properties / departureTimeAdded value: +{ + "description": "Timetabled bus departure, ISO 8601", + "type": "string" +} - added
Output schema / properties / routesRequiringRideConnection / items / properties / segments / items / properties / fareBasisAdded value: +{ + "description": "How the bus fare was set: the operator's published single, a local flat fare, an estimate at England's national fare cap, or unavailable", + "enum": [ + "operator-published", + "local-flat-fare", + "national-fare-cap-estimate", + "unavailable" + ], + "type": "string" +} - added
Output schema / properties / routesRequiringRideConnection / items / properties / segments / items / properties / fareMinAdded value: +{ + "description": "Lowest listed bus fare when the operator lists several", + "type": "number" +} - added
Output schema / properties / routesRequiringRideConnection / items / properties / timeZoneAdded value: +{ + "type": "string" +}
- Changed
search_places1 field changed- added
Input schema / properties / countryCode / descriptionAdded value: +"Country to search: \"gh\" for Ghana, or \"gb\" for England, Scotland and Wales"
2 tool updates
- Changed
plan_trip1 field changed- changed
Output schema / properties / trotro / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "complete": { - "type": "boolean" - }, - "routeCounts": { - "additionalProperties": false, - "properties": { - "direct": { - "additionalProperties": false, - "properties": { - "returned": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "total": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "total", - "returned", - "truncated" - ], - "type": "object" - }, - "rideConnection": { - "additionalProperties": false, - "properties": { - "returned": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "total": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "total", - "returned", - "truncated" - ], - "type": "object" - } - }, - "required": [ - "direct", - "rideConnection" - ], - "type": "object" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "complete": { - "type": "boolean" - }, - "currency": { - "type": "string" - }, - "destinationStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "originStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "segmentCounts": { - "additionalProperties": false, - "properties": { - "returned": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "total": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "total", - "returned", - "truncated" - ], - "type": "object" - }, - "segments": { - "items": { - "additionalProperties": false, - "properties": { - "alightAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "boardAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "currency": { - "type": "string" - }, - "fare": { - "type": "number" - }, - "routeDestination": { - "type": "string" - }, - "routeName": { - "type": "string" - } - }, - "required": [ - "boardAt", - "alightAt" - ], - "type": "object" - }, - "type": "array" - }, - "totalFare": { - "type": "number" - }, - "transferCount": { - "type": "number" - }, - "walkingDistanceFromDestinationKm": { - "type": "number" - }, - "walkingDistanceToPickupKm": { - "type": "number" - } - }, - "required": [ - "originStop", - "destinationStop", - "segments", - "segmentCounts", - "complete" - ], - "type": "object" - }, - "type": "array" - }, - "routesRequiringRideConnection": { - "items": { - "additionalProperties": false, - "properties": { - "complete": { - "type": "boolean" - }, - "currency": { - "type": "string" - }, - "destinationStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - }, - "originStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "segmentCounts": { - "additionalProperties": false, - "properties": { - "returned": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "total": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "total", - "returned", - "truncated" - ], - "type": "object" - }, - "segments": { - "items": { - "additionalProperties": false, - "properties": { - "alightAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "boardAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "currency": { - "type": "string" - }, - "fare": { - "type": "number" - }, - "routeDestination": { - "type": "string" - }, - "routeName": { - "type": "string" - } - }, - "required": [ - "boardAt", - "alightAt" - ], - "type": "object" - }, - "type": "array" - }, - "totalFare": { - "type": "number" - }, - "transferCount": { - "type": "number" - }, - "walkingDistanceFromDestinationKm": { - "type": "number" - }, - "walkingDistanceToPickupKm": { - "type": "number" - } - }, - "required": [ - "originStop", - "destinationStop", - "segments", - "segmentCounts", - "complete" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "routes", - "routesRequiringRideConnection", - "routeCounts", - "complete" - ], - "type": "object" - }, - "status": { - "enum": [ - "complete", - "partial" - ], - "type": "string" - } - }, - "required": [ - "status", - "data" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "error": { - "additionalProperties": false, - "properties": { - "code": { - "enum": [ - "cancelled", - "timeout", - "unavailable" - ], - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "code", - "message" - ], - "type": "object" - }, - "status": { - "const": "failed", - "type": "string" - } - }, - "required": [ - "status", - "error" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "complete": { + "type": "boolean" + }, + "routeCounts": { + "additionalProperties": false, + "properties": { + "direct": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "rideConnection": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + } + }, + "required": [ + "direct", + "rideConnection" + ], + "type": "object" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "complete": { + "type": "boolean" + }, + "currency": { + "type": "string" + }, + "destinationStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "originStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "segmentCounts": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "segments": { + "items": { + "additionalProperties": false, + "properties": { + "alightAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "boardAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "currency": { + "type": "string" + }, + "fare": { + "type": "number" + }, + "routeDestination": { + "type": "string" + }, + "routeName": { + "type": "string" + } + }, + "required": [ + "boardAt", + "alightAt" + ], + "type": "object" + }, + "type": "array" + }, + "totalFare": { + "type": "number" + }, + "transferCount": { + "type": "number" + }, + "walkingDistanceFromDestinationKm": { + "type": "number" + }, + "walkingDistanceToPickupKm": { + "type": "number" + }, + "walkingUncertaintyNote": { + "type": "string" + } + }, + "required": [ + "originStop", + "destinationStop", + "segments", + "segmentCounts", + "complete" + ], + "type": "object" + }, + "type": "array" + }, + "routesRequiringRideConnection": { + "items": { + "additionalProperties": false, + "properties": { + "complete": { + "type": "boolean" + }, + "currency": { + "type": "string" + }, + "destinationStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + }, + "originStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "segmentCounts": { + "additionalProperties": false, + "properties": { + "returned": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "total": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "total", + "returned", + "truncated" + ], + "type": "object" + }, + "segments": { + "items": { + "additionalProperties": false, + "properties": { + "alightAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "boardAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "currency": { + "type": "string" + }, + "fare": { + "type": "number" + }, + "routeDestination": { + "type": "string" + }, + "routeName": { + "type": "string" + } + }, + "required": [ + "boardAt", + "alightAt" + ], + "type": "object" + }, + "type": "array" + }, + "totalFare": { + "type": "number" + }, + "transferCount": { + "type": "number" + }, + "walkingDistanceFromDestinationKm": { + "type": "number" + }, + "walkingDistanceToPickupKm": { + "type": "number" + }, + "walkingUncertaintyNote": { + "type": "string" + } + }, + "required": [ + "originStop", + "destinationStop", + "segments", + "segmentCounts", + "complete" + ], + "type": "object" + }, + "type": "array" + }, + "skipNote": { + "type": "string" + } + }, + "required": [ + "routes", + "routesRequiringRideConnection", + "routeCounts", + "complete" + ], + "type": "object" + }, + "status": { + "enum": [ + "complete", + "partial" + ], + "type": "string" + } + }, + "required": [ + "status", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "enum": [ + "cancelled", + "timeout", + "unavailable" + ], + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "status": { + "const": "failed", + "type": "string" + } + }, + "required": [ + "status", + "error" + ], + "type": "object" + } +]
- Changed
plan_trotro_route3 fields changed- changed
Output schema / properties / routes / items / properties / steps / items / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "distanceMeters": { - "type": "number" - }, - "durationMinutes": { - "type": "number" - }, - "instruction": { - "type": "string" - }, - "roadCrossings": { - "items": { - "additionalProperties": false, - "properties": { - "confidence": { - "const": "high", - "type": "string" - }, - "distanceFromStartMeters": { - "minimum": 0, - "type": "number" - }, - "evidence": { - "enum": [ - "mapped-crossing", - "short-road-traversal" - ], - "type": "string" - }, - "location": { - "additionalProperties": false, - "properties": { - "lat": { - "description": "Latitude in decimal degrees", - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "lng": { - "description": "Longitude in decimal degrees", - "maximum": 180, - "minimum": -180, - "type": "number" - } - }, - "required": [ - "lat", - "lng" - ], - "type": "object" - } - }, - "required": [ - "location", - "distanceFromStartMeters", - "evidence", - "confidence" - ], - "type": "object" - }, - "type": "array" - }, - "roadCrossingsTotal": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "roadCrossingsTruncated": { - "type": "boolean" - }, - "toStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "walk", - "type": "string" - } - }, - "required": [ - "type", - "toStop" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "alightAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "alightingRoadCrossing": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "confidence": { - "const": "high", - "type": "string" - }, - "status": { - "const": "required", - "type": "string" - } - }, - "required": [ - "status", - "confidence" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "unknown", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - } - ] - }, - "boardAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "boardingRoadCrossing": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "confidence": { - "const": "high", - "type": "string" - }, - "status": { - "const": "required", - "type": "string" - } - }, - "required": [ - "status", - "confidence" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "unknown", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - } - ] - }, - "currency": { - "type": "string" - }, - "fare": { - "type": "number" - }, - "instruction": { - "type": "string" - }, - "route": { - "type": "string" - }, - "stopCount": { - "type": "number" - }, - "toward": { - "type": "string" - }, - "type": { - "const": "ride", - "type": "string" - } - }, - "required": [ - "type", - "boardAt", - "alightAt" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "distanceMeters": { + "type": "number" + }, + "durationMinutes": { + "type": "number" + }, + "instruction": { + "type": "string" + }, + "roadCrossings": { + "items": { + "additionalProperties": false, + "properties": { + "confidence": { + "const": "high", + "type": "string" + }, + "distanceFromStartMeters": { + "minimum": 0, + "type": "number" + }, + "evidence": { + "enum": [ + "mapped-crossing", + "short-road-traversal" + ], + "type": "string" + }, + "location": { + "additionalProperties": false, + "properties": { + "lat": { + "description": "Latitude in decimal degrees", + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "lng": { + "description": "Longitude in decimal degrees", + "maximum": 180, + "minimum": -180, + "type": "number" + } + }, + "required": [ + "lat", + "lng" + ], + "type": "object" + } + }, + "required": [ + "location", + "distanceFromStartMeters", + "evidence", + "confidence" + ], + "type": "object" + }, + "type": "array" + }, + "roadCrossingsTotal": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "roadCrossingsTruncated": { + "type": "boolean" + }, + "toStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "walk", + "type": "string" + }, + "unverifiedEndpointMeters": { + "minimum": 0, + "type": "number" + } + }, + "required": [ + "type", + "toStop" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "alightAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "alightingRoadCrossing": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "confidence": { + "const": "high", + "type": "string" + }, + "status": { + "const": "required", + "type": "string" + } + }, + "required": [ + "status", + "confidence" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "unknown", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } + ] + }, + "boardAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "boardingRoadCrossing": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "confidence": { + "const": "high", + "type": "string" + }, + "status": { + "const": "required", + "type": "string" + } + }, + "required": [ + "status", + "confidence" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "unknown", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } + ] + }, + "currency": { + "type": "string" + }, + "fare": { + "type": "number" + }, + "instruction": { + "type": "string" + }, + "route": { + "type": "string" + }, + "stopCount": { + "type": "number" + }, + "toward": { + "type": "string" + }, + "type": { + "const": "ride", + "type": "string" + } + }, + "required": [ + "type", + "boardAt", + "alightAt" + ], + "type": "object" + } +] - changed
Output schema / properties / routesRequiringRideConnection / items / properties / steps / items / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "distanceMeters": { - "type": "number" - }, - "durationMinutes": { - "type": "number" - }, - "instruction": { - "type": "string" - }, - "roadCrossings": { - "items": { - "additionalProperties": false, - "properties": { - "confidence": { - "const": "high", - "type": "string" - }, - "distanceFromStartMeters": { - "minimum": 0, - "type": "number" - }, - "evidence": { - "enum": [ - "mapped-crossing", - "short-road-traversal" - ], - "type": "string" - }, - "location": { - "additionalProperties": false, - "properties": { - "lat": { - "description": "Latitude in decimal degrees", - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "lng": { - "description": "Longitude in decimal degrees", - "maximum": 180, - "minimum": -180, - "type": "number" - } - }, - "required": [ - "lat", - "lng" - ], - "type": "object" - } - }, - "required": [ - "location", - "distanceFromStartMeters", - "evidence", - "confidence" - ], - "type": "object" - }, - "type": "array" - }, - "roadCrossingsTotal": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "roadCrossingsTruncated": { - "type": "boolean" - }, - "toStop": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "walk", - "type": "string" - } - }, - "required": [ - "type", - "toStop" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "alightAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "alightingRoadCrossing": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "confidence": { - "const": "high", - "type": "string" - }, - "status": { - "const": "required", - "type": "string" - } - }, - "required": [ - "status", - "confidence" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "unknown", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - } - ] - }, - "boardAt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "boardingRoadCrossing": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "confidence": { - "const": "high", - "type": "string" - }, - "status": { - "const": "required", - "type": "string" - } - }, - "required": [ - "status", - "confidence" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "unknown", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - } - ] - }, - "currency": { - "type": "string" - }, - "fare": { - "type": "number" - }, - "instruction": { - "type": "string" - }, - "route": { - "type": "string" - }, - "stopCount": { - "type": "number" - }, - "toward": { - "type": "string" - }, - "type": { - "const": "ride", - "type": "string" - } - }, - "required": [ - "type", - "boardAt", - "alightAt" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "distanceMeters": { + "type": "number" + }, + "durationMinutes": { + "type": "number" + }, + "instruction": { + "type": "string" + }, + "roadCrossings": { + "items": { + "additionalProperties": false, + "properties": { + "confidence": { + "const": "high", + "type": "string" + }, + "distanceFromStartMeters": { + "minimum": 0, + "type": "number" + }, + "evidence": { + "enum": [ + "mapped-crossing", + "short-road-traversal" + ], + "type": "string" + }, + "location": { + "additionalProperties": false, + "properties": { + "lat": { + "description": "Latitude in decimal degrees", + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "lng": { + "description": "Longitude in decimal degrees", + "maximum": 180, + "minimum": -180, + "type": "number" + } + }, + "required": [ + "lat", + "lng" + ], + "type": "object" + } + }, + "required": [ + "location", + "distanceFromStartMeters", + "evidence", + "confidence" + ], + "type": "object" + }, + "type": "array" + }, + "roadCrossingsTotal": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "roadCrossingsTruncated": { + "type": "boolean" + }, + "toStop": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "walk", + "type": "string" + }, + "unverifiedEndpointMeters": { + "minimum": 0, + "type": "number" + } + }, + "required": [ + "type", + "toStop" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "alightAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "alightingRoadCrossing": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "confidence": { + "const": "high", + "type": "string" + }, + "status": { + "const": "required", + "type": "string" + } + }, + "required": [ + "status", + "confidence" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "unknown", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } + ] + }, + "boardAt": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "boardingRoadCrossing": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "confidence": { + "const": "high", + "type": "string" + }, + "status": { + "const": "required", + "type": "string" + } + }, + "required": [ + "status", + "confidence" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "unknown", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } + ] + }, + "currency": { + "type": "string" + }, + "fare": { + "type": "number" + }, + "instruction": { + "type": "string" + }, + "route": { + "type": "string" + }, + "stopCount": { + "type": "number" + }, + "toward": { + "type": "string" + }, + "type": { + "const": "ride", + "type": "string" + } + }, + "required": [ + "type", + "boardAt", + "alightAt" + ], + "type": "object" + } +] - added
Output schema / properties / skipNoteAdded value: +{ + "type": "string" +}
5 tool updates
- First observed
compare_rides - First observed
plan_trip - First observed
plan_trotro_route - First observed
resolve_place - First observed
search_places
Related MCP Connectors
Book rides, get fare estimates, and manage trips across African cities with Rovv.
Plan journeys by train, bus, tram, metro and ferry across 42 European countries.
Hong Kong public transport trips (MTR, bus, minibus, ferry), live times, fares and border queues.
Mobility, geocoding and nearby urban services for AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables comparing door-to-door travel times by bicycle, motorbike, and public transport alongside local weather, and provides place lookup and API usage tracking.4Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables searching for buses and trains, and when direct routes are unavailable, it provides the underlying data needed to assemble multi-leg itineraries with transfers.1 npmISC
- AlicenseAqualityBmaintenanceEnables public-transport journey planning, place search, realtime departures and timetables, usable from any MCP client.9MIT
- AlicenseNot gradedqualityDmaintenanceProvides real-time transit routes and arrival times for Israel, using Google Routes API, Places API, and GTFS data.2GPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.