Skip to main content
Glama

Get Route Realtime

get_route_realtime
Read-onlyIdempotent

Returns every vehicle currently running on a route: position, the destination it is heading to, and its next stop with estimated arrival. headways sums up each direction: how many vehicles run, the live gaps between consecutive vehicles in minutes (front to back), and how often the timetable says it should run right now. Use when the user asks "where is my tram/bus right now?", how many vehicles are running, how far the next one is, or how often a route runs. Pass direction (0 or 1, as in get_route_static's stops) to get only one way. Prefer get_stop_realtime when the user is at a stop and wants arrival times there. Requires a route short name (e.g. "T30", "32A") or numeric external ID.

Input Schema

NameRequiredDescriptionDefault
directionNoOnly vehicles heading this way: 0 or 1, the index into get_route_static's `stops`. Omit for both.
route_nameYesRoute short name (e.g. "T30", "32A") or numeric external ID.

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. Changed34 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • 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 / direction / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / direction / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • 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 / headways / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / headways / items / properties / direction / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / headways / items / properties / direction / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / headways / items / properties / gaps_minutes / items / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / headways / items / properties / gaps_minutes / items / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / headways / items / properties / scheduled_headway_minutes / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / headways / items / properties / scheduled_headway_minutes / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / headways / items / properties / vehicles / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / properties / headways / items / properties / vehicles / minimum
      Removed value: --9007199254740991
    • removedOutput schema / properties / data / properties / vehicles / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / data / properties / vehicles / items / properties / direction / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / direction / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / next_stop / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "arrival": {
      -        "type": "string"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "name",
      -      "arrival"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / next_stop / properties
      Added value: +{
      +  "arrival": {
      +    "type": "string"
      +  },
      +  "id": {
      +    "type": "string"
      +  },
      +  "name": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / data / properties / vehicles / items / properties / next_stop / required
      Added value: +[
      +  "id",
      +  "name",
      +  "arrival"
      +]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / next_stop / type
      Added value: +[
      +  "object",
      +  "null"
      +]
    • 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. Changed4 schema fields changed
    • addedInput schema / properties / direction
      Added value: +{
      +  "description": "Only vehicles heading this way: 0 or 1, the index into get_route_static's `stops`. Omit for both.",
      +  "maximum": 1,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / data / properties / direction
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / data / properties / headways
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "destination": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "direction": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "gaps_minutes": {
      +        "items": {
      +          "anyOf": [
      +            {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "type": "array"
      +      },
      +      "scheduled_headway_minutes": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "vehicles": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "direction",
      +      "destination",
      +      "vehicles",
      +      "gaps_minutes",
      +      "scheduled_headway_minutes"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "route_name",
      -  "destinations",
      -  "vehicles",
      -  "updated_at"
      -]New value: +[
      +  "route_name",
      +  "destinations",
      +  "direction",
      +  "vehicles",
      +  "headways",
      +  "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. Changed8 schema fields changed
    • addedOutput schema / properties / data / properties / destinations
      Added value: +{
      +  "items": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / data / properties / vehicles / items / properties / destination
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / data / properties / vehicles / items / properties / next_stop
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "arrival": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "name",
      +        "arrival"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / data / properties / vehicles / items / required
      Previous value: -[
      -  "id",
      -  "direction",
      -  "lat",
      -  "lng",
      -  "bearing",
      -  "lowfloor"
      -]New value: +[
      +  "id",
      +  "direction",
      +  "destination",
      +  "next_stop",
      +  "lat",
      +  "lng",
      +  "bearing",
      +  "lowfloor"
      +]
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "route_name",
      -  "vehicles",
      -  "updated_at"
      -]New value: +[
      +  "route_name",
      +  "destinations",
      +  "vehicles",
      +  "updated_at"
      +]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / layers
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "polylines": {
      +      "type": "string"
      +    },
      +    "stops": {
      +      "type": "string"
      +    },
      +    "vehicles": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bearing": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "direction": {
      -        "anyOf": [
      -          {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "lat": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "lng": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "lowfloor": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "direction",
      -      "lat",
      -      "lng",
      -      "bearing",
      -      "lowfloor"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / properties / ui_blocks / items / properties / data / required
      Previous value: -[
      -  "center",
      -  "zoom",
      -  "vehicles"
      -]New value: +[
      +  "center",
      +  "zoom",
      +  "layers"
      +]
  9. Changed20 schema fields changed
    • removedOutput schema / properties / data / properties / vehicles / items / properties / bearing / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / bearing / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / lat / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / lat / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / lng / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / lng / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
      Added value: +false
    • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / maxItems
      Added value: +2
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / minItems
      Added value: +2
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lowfloor / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lowfloor / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
  10. Changed4 schema fields changed
    • addedOutput schema / properties / data / properties / vehicles / items / properties / direction / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / direction / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lowfloor / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  11. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "data": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "route_name": {
      +          "type": "string"
      +        },
      +        "updated_at": {
      +          "type": "string"
      +        },
      +        "vehicles": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "bearing": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "direction": {},
      +              "id": {
      +                "type": "string"
      +              },
      +              "lat": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "lng": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "lowfloor": {}
      +            },
      +            "required": [
      +              "id",
      +              "direction",
      +              "lat",
      +              "lng",
      +              "bearing",
      +              "lowfloor"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "route_name",
      +        "vehicles",
      +        "updated_at"
      +      ],
      +      "type": "object"
      +    },
      +    "ui_blocks": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "data": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "center": {
      +                "items": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "type": "number"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "type": "number"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                ],
      +                "type": "array"
      +              },
      +              "vehicles": {
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "bearing": {
      +                      "anyOf": [
      +                        {
      +                          "type": "number"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "direction": {},
      +                    "id": {
      +                      "type": "string"
      +                    },
      +                    "lat": {
      +                      "anyOf": [
      +                        {
      +                          "type": "number"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "lng": {
      +                      "anyOf": [
      +                        {
      +                          "type": "number"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "lowfloor": {}
      +                  },
      +                  "required": [
      +                    "id",
      +                    "direction",
      +                    "lat",
      +                    "lng",
      +                    "bearing",
      +                    "lowfloor"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "zoom": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "center",
      +              "zoom",
      +              "vehicles"
      +            ],
      +            "type": "object"
      +          },
      +          "type": {
      +            "const": "map",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "data"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "view": {
      +      "const": "transit_realtime",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "view",
      +    "data",
      +    "ui_blocks"
      +  ],
      +  "type": "object"
      +}
  12. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, open-world behavior, so the description is not carrying the safety burden. It does add real semantic context beyond them: what `headways` actually computes (vehicle count per direction, live front-to-back gaps in minutes, current scheduled frequency) and what `direction` filtering does. It stops short of stating freshness/lag of the live data or what happens when a route has no running vehicles.

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?

Use cases and output content are front-loaded, and the sibling routing plus input constraints follow in a logical order. The `headways` sentence is dense and slightly parenthetical, but every clause conveys information an agent would otherwise have to guess.

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

Completeness4/5

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

With an output schema present, the description does not need to detail return structure, and with only two fully documented parameters the input side is covered. The only material omission is runtime behavior for edge cases such as an unknown route name or a route with no active vehicles, which matters for an open-world live-data tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents both fields. The description still adds cross-tool meaning by tying `direction` to the index into get_route_static's `stops` and by restating the accepted route identifier formats, which helps an agent resolve the value correctly.

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: 'Returns every vehicle currently running on a route', then enumerates the payload (position, destination, next stop ETA) and the additional `headways` aggregate. It is clearly distinguishable from get_route_static (schedule/stops) and get_stop_realtime (per-stop arrivals) named later in the text.

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

Usage Guidelines5/5

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

Gives concrete user intents that select this tool ("where is my tram/bus right now?", vehicle counts, next-vehicle distance, frequency) and names the alternative explicitly: prefer `get_stop_realtime` when the user is at a stop. It also states the required input form (short name like "T30" or numeric external ID).

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.