Skip to main content
Glama

transit_vehicles

Where the buses (and Lisbon trams) are right now: live positions reported by the vehicles.

Args: operator: "stcp" (Porto buses), "smtuc" (Coimbra buses) or "carris" (Lisbon buses and trams). City names work too: "porto", "coimbra", "lisboa". line: keep one line, e.g. "500", "205", "28E", "103". lat, lon: keep the vehicles near this point (within radius_km), closest first. For Greater-Lisbon buses use bus_vehicle_positions / bus_next_arrivals (Carris Metropolitana).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "operator": "<operator>"
    },
    "name": "transit_vehicles"
  }
}

Input Schema

NameRequiredDescriptionDefault
latNo
lonNo
lineNo
limitNo
operatorYes
radius_kmNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden and does add useful context: the data is live/reported by vehicles, and lat/lon filtering returns closest vehicles first within radius_km. However, it does not mention whether the operation is read-only, rate limits, authentication, pagination, or how limit affects results.

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 front-loaded with the core purpose, then uses a compact Args section to explain parameters and closes with a sibling alternative. It is appropriately sized with no filler.

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

Completeness4/5

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

For a six-parameter real-time positions tool with no annotations and an output schema, the description covers the essential selection and filtering semantics. It falls short only on limit behavior and broader operational details such as rate limits or response constraints.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must explain parameters, and it does for operator, line, lat, lon, and radius_km, including examples for line values and city aliases for operator. The notable gap is limit, which is not explained anywhere despite being a parameter.

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 resource and behavior: live vehicle positions from transit operators, with named operator values and a clear real-time scope. It also distinguishes this tool from the Greater-Lisbon bus siblings, so an agent can identify its purpose without opening the 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?

It explains the primary use case (current bus/tram positions), lists accepted operator values and city aliases, and explicitly routes Greater-Lisbon bus queries to bus_vehicle_positions or bus_next_arrivals. That gives both when-to-use context and a concrete alternative.

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.