Skip to main content
Glama

Find Routes Between Stops

find_routes_between
Read-onlyIdempotent

Lists the routes from one place to another: which stop to board, where to get off, the direction's destination, stops in between, and the walk at each end — best first, walking counted. Each end is a stop ID (from_stop_id) or coordinates (from_lat + from_lng), e.g. an address the user gave; a point covers every stop within a 600 m walk of it. options are direct routes. transfer_options have exactly one interchange (never more): ride legs[0], walk transfer_walk_meters (within a 300 m stop cluster, 0 when it is the same stop) to legs[1].board_stop, ride legs[1]. They are listed when there is no direct route or when they beat the best direct one. Every option carries schedule: by the timetable, when to leave, when each leg boards and alights, when you arrive, and total_minutes door to door. Plan for now by default, or pass depart_at or arrive_by ("HH:MM" Lviv time today, or ISO 8601). When planning for now, options also carry next_departures: the live next departures of the first leg from its boarding stop, so no separate get_stop_realtime call is needed. map_stops holds the best trip's stops in riding order, each with a role (board, transfer — or transfer_alight + transfer_board when the interchange is a walk — and alight). Use when the user asks how to get from A to B, which bus/tram goes from one place to another, how long it takes, or when to leave to be somewhere on time. A stop end covers every stop within a 300 m walk of it, since a line's two directions often stop on opposite sides of a street under different names; board_stop says where to actually wait. Routes the city has suspended, and stops a detour skips, are left out. walk_meters is set when the two ends are within a 300 m walk of each other: no ride is searched then, so tell the user to walk. Otherwise both lists empty means the trip needs two or more transfers. Get stop IDs with search_stops or get_stops_around_location.

Input Schema

NameRequiredDescriptionDefault
to_latNoDecimal latitude of the destination, WGS84 (e.g. 49.842 for central Lviv).
to_lngNoDecimal longitude of the destination, WGS84 (e.g. 24.031 for central Lviv).
from_latNoDecimal latitude of the start point, WGS84 (e.g. 49.842 for central Lviv).
from_lngNoDecimal longitude of the start point, WGS84 (e.g. 24.031 for central Lviv).
arrive_byNoArrive by this time: "HH:MM" Lviv time today, or ISO 8601. Not together with `depart_at`.
depart_atNoLeave at this time: "HH:MM" Lviv time today, or ISO 8601. Default now. Not together with `arrive_by`.
to_stop_idNoStop ID where the trip ends. Give this or `to_lat` + `to_lng`.
from_stop_idNoStop ID where the trip starts. Give this or `from_lat` + `from_lng`.

Output Schema

NameRequiredDescriptionDefault
dataYes
viewYes
ui_blocksYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
      Removed value: -false
    • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
      Previous value: -[
      -  {
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  {
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  }
      -]New value: +false
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / prefixItems
      Added value: +[
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  }
      +]
  2. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / disruptions / items / properties / area
      Added value: +{
      +  "properties": {
      +    "lat": {
      +      "type": "number"
      +    },
      +    "lng": {
      +      "type": "number"
      +    },
      +    "radius_meters": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "lat",
      +    "lng",
      +    "radius_meters"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / data / properties / disruptions / items / required
      Previous value: -[
      -  "id",
      -  "kind",
      -  "reason",
      -  "since",
      -  "until",
      -  "until_text",
      -  "routes",
      -  "stops",
      -  "alternatives",
      -  "detour",
      -  "note",
      -  "source",
      -  "url"
      -]New value: +[
      +  "id",
      +  "kind",
      +  "reason",
      +  "since",
      +  "until",
      +  "until_text",
      +  "routes",
      +  "stops",
      +  "alternatives",
      +  "detour",
      +  "area",
      +  "note",
      +  "source",
      +  "url"
      +]
  3. Changed67 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedInput schema / properties / from_stop_id / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / to_stop_id / maximum
      Removed value: -9007199254740991
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / disruptions / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / disruptions / items / properties / alternatives / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / disruptions / items / properties / detour / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "skipped_stops": {
      -        "items": {
      -          "maximum": 9007199254740991,
      -          "minimum": -9007199254740991,
      -          "type": "integer"
      -        },
      -        "type": "array"
      -      },
      -      "via": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "via",
      -      "skipped_stops"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / disruptions / items / properties / detour / properties
      Added value: +{
      +  "skipped_stops": {
      +    "items": {
      +      "type": "integer"
      +    },
      +    "type": "array"
      +  },
      +  "via": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  }
      +}
    • addedOutput schema / properties / data / properties / disruptions / items / properties / detour / required
      Added value: +[
      +  "via",
      +  "skipped_stops"
      +]
    • addedOutput schema / properties / data / properties / disruptions / items / properties / detour / type
      Added value: +[
      +  "object",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / disruptions / items / properties / routes / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / disruptions / items / properties / stops / items / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / disruptions / items / properties / stops / items / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / from / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / from / properties / point / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / map_stops / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / options / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / options / items / properties / alight_stop / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / options / items / properties / board_stop / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / options / items / properties / direction / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / options / items / properties / direction / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / options / items / properties / next_departures / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / options / items / properties / next_departures / items / properties / arrival_minutes / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / options / items / properties / next_departures / items / properties / arrival_minutes / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / options / items / properties / schedule / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "arrive_at": {
      -        "type": "string"
      -      },
      -      "leave_at": {
      -        "type": "string"
      -      },
      -      "legs": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alight_at": {
      -              "type": "string"
      -            },
      -            "board_at": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "board_at",
      -            "alight_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "total_minutes": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "leave_at",
      -      "arrive_at",
      -      "total_minutes",
      -      "legs"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / options / items / properties / schedule / properties
      Added value: +{
      +  "arrive_at": {
      +    "type": "string"
      +  },
      +  "leave_at": {
      +    "type": "string"
      +  },
      +  "legs": {
      +    "items": {
      +      "properties": {
      +        "alight_at": {
      +          "type": "string"
      +        },
      +        "board_at": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "board_at",
      +        "alight_at"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "total_minutes": {
      +    "type": "integer"
      +  }
      +}
    • addedOutput schema / properties / data / properties / options / items / properties / schedule / required
      Added value: +[
      +  "leave_at",
      +  "arrive_at",
      +  "total_minutes",
      +  "legs"
      +]
    • addedOutput schema / properties / data / properties / options / items / properties / schedule / type
      Added value: +[
      +  "object",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / options / items / properties / stops_count / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / options / items / properties / stops_count / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / options / items / properties / walk_from_alight_meters / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / options / items / properties / walk_from_alight_meters / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / options / items / properties / walk_to_board_meters / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / options / items / properties / walk_to_board_meters / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / timing / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / to / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / to / properties / point / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / transfer_options / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / legs / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / alight_stop / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / board_stop / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / direction / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / direction / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / stops_count / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / legs / items / properties / stops_count / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / next_departures / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / next_departures / items / properties / arrival_minutes / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / transfer_options / items / properties / next_departures / items / properties / arrival_minutes / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / schedule / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "arrive_at": {
      -        "type": "string"
      -      },
      -      "leave_at": {
      -        "type": "string"
      -      },
      -      "legs": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alight_at": {
      -              "type": "string"
      -            },
      -            "board_at": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "board_at",
      -            "alight_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "total_minutes": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "leave_at",
      -      "arrive_at",
      -      "total_minutes",
      -      "legs"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / transfer_options / items / properties / schedule / properties
      Added value: +{
      +  "arrive_at": {
      +    "type": "string"
      +  },
      +  "leave_at": {
      +    "type": "string"
      +  },
      +  "legs": {
      +    "items": {
      +      "properties": {
      +        "alight_at": {
      +          "type": "string"
      +        },
      +        "board_at": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "board_at",
      +        "alight_at"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "total_minutes": {
      +    "type": "integer"
      +  }
      +}
    • addedOutput schema / properties / data / properties / transfer_options / items / properties / schedule / required
      Added value: +[
      +  "leave_at",
      +  "arrive_at",
      +  "total_minutes",
      +  "legs"
      +]
    • addedOutput schema / properties / data / properties / transfer_options / items / properties / schedule / type
      Added value: +[
      +  "object",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / stops_count / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / stops_count / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / transfer_walk_meters / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / transfer_walk_meters / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / walk_from_alight_meters / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / walk_from_alight_meters / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / walk_to_board_meters / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / transfer_options / items / properties / walk_to_board_meters / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / walk_meters / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / walk_meters / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / ui_blocks / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / ui_blocks / items / properties / data / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / layers / additionalProperties
      Removed value: -false
  4. Changed20 schema fields changed
    • addedInput schema / properties / arrive_by
      Added value: +{
      +  "description": "Arrive by this time: \"HH:MM\" Lviv time today, or ISO 8601. Not together with `depart_at`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / depart_at
      Added value: +{
      +  "description": "Leave at this time: \"HH:MM\" Lviv time today, or ISO 8601. Default now. Not together with `arrive_by`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / from_lat
      Added value: +{
      +  "description": "Decimal latitude of the start point, WGS84 (e.g. 49.842 for central Lviv).",
      +  "maximum": 90,
      +  "minimum": -90,
      +  "type": "number"
      +}
    • addedInput schema / properties / from_lng
      Added value: +{
      +  "description": "Decimal longitude of the start point, WGS84 (e.g. 24.031 for central Lviv).",
      +  "maximum": 180,
      +  "minimum": -180,
      +  "type": "number"
      +}
    • changedInput schema / properties / from_stop_id / description
      Previous value: -"Stop ID where the trip starts."New value: +"Stop ID where the trip starts. Give this or `from_lat` + `from_lng`."
    • addedInput schema / properties / to_lat
      Added value: +{
      +  "description": "Decimal latitude of the destination, WGS84 (e.g. 49.842 for central Lviv).",
      +  "maximum": 90,
      +  "minimum": -90,
      +  "type": "number"
      +}
    • addedInput schema / properties / to_lng
      Added value: +{
      +  "description": "Decimal longitude of the destination, WGS84 (e.g. 24.031 for central Lviv).",
      +  "maximum": 180,
      +  "minimum": -180,
      +  "type": "number"
      +}
    • changedInput schema / properties / to_stop_id / description
      Previous value: -"Stop ID where the trip ends."New value: +"Stop ID where the trip ends. Give this or `to_lat` + `to_lng`."
    • removedInput schema / required
      Removed value: -[
      -  "from_stop_id",
      -  "to_stop_id"
      -]
    • addedOutput schema / properties / data / properties / from / properties / point
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "lat": {
      +      "type": "number"
      +    },
      +    "lng": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "lat",
      +    "lng"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / options / items / properties / next_departures
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "arrival_minutes": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "lowfloor": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "scheduled": {
      +        "type": "boolean"
      +      },
      +      "vehicle_id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "arrival_minutes",
      +      "scheduled",
      +      "vehicle_id",
      +      "lowfloor"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / data / properties / options / items / properties / schedule
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "arrive_at": {
      +          "type": "string"
      +        },
      +        "leave_at": {
      +          "type": "string"
      +        },
      +        "legs": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "alight_at": {
      +                "type": "string"
      +              },
      +              "board_at": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "board_at",
      +              "alight_at"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "total_minutes": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "leave_at",
      +        "arrive_at",
      +        "total_minutes",
      +        "legs"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / data / properties / options / items / required
      Previous value: -[
      -  "route",
      -  "vehicle_type",
      -  "direction",
      -  "destination",
      -  "board_stop",
      -  "alight_stop",
      -  "stops_count",
      -  "walk_to_board_meters",
      -  "walk_from_alight_meters"
      -]New value: +[
      +  "route",
      +  "vehicle_type",
      +  "direction",
      +  "destination",
      +  "board_stop",
      +  "alight_stop",
      +  "stops_count",
      +  "walk_to_board_meters",
      +  "walk_from_alight_meters",
      +  "schedule"
      +]
    • addedOutput schema / properties / data / properties / timing
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "at": {
      +      "type": "string"
      +    },
      +    "mode": {
      +      "enum": [
      +        "depart_at",
      +        "arrive_by"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "mode",
      +    "at"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / to / properties / point
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "lat": {
      +      "type": "number"
      +    },
      +    "lng": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "lat",
      +    "lng"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / transfer_options / items / properties / next_departures
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "arrival_minutes": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "lowfloor": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "scheduled": {
      +        "type": "boolean"
      +      },
      +      "vehicle_id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "arrival_minutes",
      +      "scheduled",
      +      "vehicle_id",
      +      "lowfloor"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / data / properties / transfer_options / items / properties / schedule
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "arrive_at": {
      +          "type": "string"
      +        },
      +        "leave_at": {
      +          "type": "string"
      +        },
      +        "legs": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "alight_at": {
      +                "type": "string"
      +              },
      +              "board_at": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "board_at",
      +              "alight_at"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "total_minutes": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "leave_at",
      +        "arrive_at",
      +        "total_minutes",
      +        "legs"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / data / properties / transfer_options / items / required
      Previous value: -[
      -  "legs",
      -  "transfer_walk_meters",
      -  "stops_count",
      -  "walk_to_board_meters",
      -  "walk_from_alight_meters"
      -]New value: +[
      +  "legs",
      +  "transfer_walk_meters",
      +  "stops_count",
      +  "walk_to_board_meters",
      +  "walk_from_alight_meters",
      +  "schedule"
      +]
    • addedOutput schema / properties / data / properties / walk_meters
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "from",
      -  "to",
      -  "options",
      -  "transfer_options",
      -  "map_stops",
      -  "updated_at"
      -]New value: +[
      +  "from",
      +  "to",
      +  "timing",
      +  "options",
      +  "transfer_options",
      +  "map_stops",
      +  "updated_at"
      +]
  5. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / disruptions
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "alternatives": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "id"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "detour": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "skipped_stops": {
      +                "items": {
      +                  "maximum": 9007199254740991,
      +                  "minimum": -9007199254740991,
      +                  "type": "integer"
      +                },
      +                "type": "array"
      +              },
      +              "via": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "via",
      +              "skipped_stops"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "kind": {
      +        "enum": [
      +          "suspended",
      +          "detour",
      +          "stop_moved",
      +          "stop_closed"
      +        ],
      +        "type": "string"
      +      },
      +      "note": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "reason": {
      +        "type": "string"
      +      },
      +      "routes": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "id"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "since": {
      +        "type": "string"
      +      },
      +      "source": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "stops": {
      +        "items": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "type": "array"
      +      },
      +      "until": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "until_text": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "url": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "kind",
      +      "reason",
      +      "since",
      +      "until",
      +      "until_text",
      +      "routes",
      +      "stops",
      +      "alternatives",
      +      "detour",
      +      "note",
      +      "source",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  6. Changed1 schema field changed
    • removedOutput schema / properties / data / properties / disruptions
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "alternatives": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "id": {
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "name",
      -            "id"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "detour": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "skipped_stops": {
      -                "items": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                },
      -                "type": "array"
      -              },
      -              "via": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "required": [
      -              "via",
      -              "skipped_stops"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "kind": {
      -        "enum": [
      -          "suspended",
      -          "detour",
      -          "stop_moved",
      -          "stop_closed"
      -        ],
      -        "type": "string"
      -      },
      -      "note": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "reason": {
      -        "type": "string"
      -      },
      -      "routes": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "id": {
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "name",
      -            "id"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "since": {
      -        "type": "string"
      -      },
      -      "source": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "stops": {
      -        "items": {
      -          "maximum": 9007199254740991,
      -          "minimum": -9007199254740991,
      -          "type": "integer"
      -        },
      -        "type": "array"
      -      },
      -      "until": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "until_text": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "url": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "kind",
      -      "reason",
      -      "since",
      -      "until",
      -      "until_text",
      -      "routes",
      -      "stops",
      -      "alternatives",
      -      "detour",
      -      "note",
      -      "source",
      -      "url"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
  7. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / disruptions
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "alternatives": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "id"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "detour": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "skipped_stops": {
      +                "items": {
      +                  "maximum": 9007199254740991,
      +                  "minimum": -9007199254740991,
      +                  "type": "integer"
      +                },
      +                "type": "array"
      +              },
      +              "via": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "via",
      +              "skipped_stops"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "kind": {
      +        "enum": [
      +          "suspended",
      +          "detour",
      +          "stop_moved",
      +          "stop_closed"
      +        ],
      +        "type": "string"
      +      },
      +      "note": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "reason": {
      +        "type": "string"
      +      },
      +      "routes": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "id"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "since": {
      +        "type": "string"
      +      },
      +      "source": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "stops": {
      +        "items": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "type": "array"
      +      },
      +      "until": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "until_text": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "url": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "kind",
      +      "reason",
      +      "since",
      +      "until",
      +      "until_text",
      +      "routes",
      +      "stops",
      +      "alternatives",
      +      "detour",
      +      "note",
      +      "source",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  8. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / map_stops
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "lat": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "lng": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "name": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "role": {
      +        "enum": [
      +          "board",
      +          "transfer",
      +          "transfer_alight",
      +          "transfer_board",
      +          "alight"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "name",
      +      "lat",
      +      "lng",
      +      "role"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "from",
      -  "to",
      -  "options",
      -  "transfer_options",
      -  "updated_at"
      -]New value: +[
      +  "from",
      +  "to",
      +  "options",
      +  "transfer_options",
      +  "map_stops",
      +  "updated_at"
      +]
  9. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / transfer_options
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "legs": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "alight_stop": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "type": "string"
      +                },
      +                "lat": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "lng": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "name",
      +                "lat",
      +                "lng"
      +              ],
      +              "type": "object"
      +            },
      +            "board_stop": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "id": {
      +                  "type": "string"
      +                },
      +                "lat": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "lng": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "name",
      +                "lat",
      +                "lng"
      +              ],
      +              "type": "object"
      +            },
      +            "destination": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "direction": {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            "route": {
      +              "type": "string"
      +            },
      +            "stops_count": {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            "vehicle_type": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "route",
      +            "vehicle_type",
      +            "direction",
      +            "destination",
      +            "board_stop",
      +            "alight_stop",
      +            "stops_count"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "stops_count": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "transfer_walk_meters": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "walk_from_alight_meters": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "walk_to_board_meters": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "legs",
      +      "transfer_walk_meters",
      +      "stops_count",
      +      "walk_to_board_meters",
      +      "walk_from_alight_meters"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "from",
      -  "to",
      -  "options",
      -  "updated_at"
      -]New value: +[
      +  "from",
      +  "to",
      +  "options",
      +  "transfer_options",
      +  "updated_at"
      +]
  10. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnly/idempotent/openWorld, and the description goes well beyond that with hard behavioral facts: at most one interchange, transfers only surfaced when they beat the best direct route, suspended routes and skipped stops filtered out, the walk_meters short-circuit when ends are within 300 m, and empty lists meaning two-plus transfers are required. It also discloses the lazy live-data behavior (next_departures included only when planning for now).

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

Conciseness4/5

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

Front-loaded with the result shape, then endpoints, then option types, then time parameters, then usage triggers — a sensible ordering with no filler sentences. It is dense and long, with heavy parenthetical nesting around transfer_walk_meters and the role enumeration, but essentially every sentence carries information an agent would otherwise have to infer.

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

Completeness5/5

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

For an eight-parameter, open-world routing tool with an output schema, the description covers the result structure, transfer constraints, filtering rules, time semantics, and the coordinate-vs-stop radius distinction. Nothing material an agent would need to call it correctly or to explain results to a user appears to be missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine interpretive meaning: a coordinate end covers every stop within a 600 m walk while a stop ID end covers a 300 m cluster, and both directions of a line may appear under different names with board_stop saying where to actually wait. The depart_at/arrive_by formats are restated from the schema rather than extended, which keeps this just short of a 5.

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

Purpose5/5

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

Opens with a specific verb and resource ("Lists the routes from one place to another") and immediately enumerates what each result carries: boarding stop, alighting stop, direction destination, intermediate stops, and end walks. It also names the sibling tools it is not (get_stop_realtime, search_stops, get_stops_around_location), so an agent can route correctly without opening another schema.

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

Usage Guidelines5/5

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

Contains an explicit trigger list: "Use when the user asks how to get from A to B, which bus/tram goes from one place to another, how long it takes, or when to leave to be somewhere on time." It also names the alternatives for obtaining stop IDs (search_stops, get_stops_around_location) and states that no separate get_stop_realtime call is needed, which is exactly the kind of exclusion an agent needs.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.