Skip to main content
Glama

Get Nearby Vehicles

get_nearby_vehicles
Read-onlyIdempotent

Returns live vehicles near a point, nearest first, each with its route, destination, and distance. Use when the user asks "what transport is near me right now?" or wants a live map around a location. Narrow with route when the user cares about one line; prefer get_route_realtime for a whole route and get_stop_realtime for arrival times at a stop. Requires decimal latitude and longitude (WGS84).

Input Schema

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

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
viewYes
ui_blocksYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • changedInput schema / properties / latitude / description
      Previous value: -"Decimal latitude of the centre point, WGS84 (e.g. 49.842)."New value: +"Decimal latitude of the centre point, WGS84 (e.g. 49.842 for central Lviv)."
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Maximum vehicles to return, nearest first (1–50, default 15). `total` reports how many were in range.",
      +  "maximum": 50,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / longitude / description
      Previous value: -"Decimal longitude of the centre point, WGS84 (e.g. 24.031)."New value: +"Decimal longitude of the centre point, WGS84 (e.g. 24.031 for central Lviv)."
    • addedInput schema / properties / radius_meters
      Added value: +{
      +  "description": "Search radius in metres (100–1000, default 500).",
      +  "maximum": 1000,
      +  "minimum": 100,
      +  "type": "integer"
      +}
    • addedInput schema / properties / route
      Added value: +{
      +  "description": "Only vehicles on this route, by short name (e.g. \"Т30\", \"А1\"). Omit for all routes.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedOutput schema / properties / data / properties / radius_meters
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / data / properties / total
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / data / properties / vehicles / items / properties / destination
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / data / properties / vehicles / items / properties / direction
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / data / properties / vehicles / items / properties / distance_meters
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / data / properties / vehicles / items / properties / id / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / data / properties / vehicles / items / required
      Previous value: -[
      -  "id",
      -  "route",
      -  "vehicle_type",
      -  "lat",
      -  "lng",
      -  "bearing",
      -  "lowfloor"
      -]New value: +[
      +  "id",
      +  "route",
      +  "vehicle_type",
      +  "direction",
      +  "destination",
      +  "lat",
      +  "lng",
      +  "bearing",
      +  "lowfloor",
      +  "distance_meters"
      +]
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "center_lat",
      -  "center_lng",
      -  "vehicles",
      -  "updated_at"
      -]New value: +[
      +  "center_lat",
      +  "center_lng",
      +  "radius_meters",
      +  "total",
      +  "vehicles",
      +  "updated_at"
      +]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / layers
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "polylines": {
      +      "type": "string"
      +    },
      +    "stops": {
      +      "type": "string"
      +    },
      +    "vehicles": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bearing": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "eta_minutes": {
      -        "anyOf": [
      -          {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "eta_status": {
      -        "enum": [
      -          "assigned",
      -          "unassigned"
      -        ],
      -        "type": "string"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "lat": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "lng": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "next_stop_id": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "route": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "route",
      -      "lat",
      -      "lng",
      -      "bearing",
      -      "next_stop_id",
      -      "eta_minutes",
      -      "eta_status"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / properties / ui_blocks / items / properties / data / required
      Previous value: -[
      -  "center",
      -  "zoom",
      -  "vehicles"
      -]New value: +[
      +  "center",
      +  "zoom",
      +  "layers"
      +]
  2. Changed30 schema fields changed
    • removedOutput schema / properties / data / properties / center_lat / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / center_lat / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / center_lng / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / center_lng / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / bearing / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / bearing / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / lat / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / lat / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / lng / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / lng / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / lowfloor / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / route / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / route / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / vehicles / items / properties / vehicle_type / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / vehicles / items / properties / vehicle_type / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / additionalItems
      Added value: +false
    • changedOutput schema / properties / ui_blocks / items / properties / data / properties / center / items
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / maxItems
      Added value: +2
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / center / minItems
      Added value: +2
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / bearing / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lat / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / lng / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / next_stop_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ui_blocks / items / properties / data / properties / vehicles / items / properties / route / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  3. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral context: 'nearest first' ordering, returned fields, and the WGS84 coordinate requirement. It does not contradict annotations and adds meaningful detail beyond them.

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

Conciseness5/5

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

The description is five sentences, front-loaded with the core purpose, then usage context and alternatives. No filler or redundancy; every sentence earns its place. It is concise despite covering multiple aspects.

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

Completeness5/5

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

For a 5-parameter tool with an output schema, the description covers the main use case, alternative tools, coordinate system, and parameter narrowing. It is complete enough for an agent to call it correctly without additional inference.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter already has detailed descriptions with examples. The tool description adds a usage hint about `route` but does not add semantic meaning beyond what the schema provides. Baseline 3 is appropriate given high schema coverage.

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

Purpose5/5

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

The description states a specific verb+resource: 'Returns live vehicles near a point' with a clear scope and output fields (route, destination, distance). It also names sibling tools to differentiate itself, making it easy for an agent to select correctly.

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

Usage Guidelines5/5

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

Provides explicit when-to-use triggers ('what transport is near me right now?') and when-not-to-use alternatives ('prefer get_route_realtime for a whole route and get_stop_realtime for arrival times at a stop'). Also gives guidance on narrowing with `route`. This is exemplary.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.