Skip to main content
Glama

Live bus positions

bus_positions
Read-only

Retrieve real-time positions, speed, direction, and status for buses on a specified city route, including low-floor ramp availability and last stop.

Instructions

Where the buses on a route are right now: position, speed, direction and status of each vehicle, whether it is low-floor with a ramp (where the city publishes its fleet), and the stop each one last arrived at or left. Example: city "Taipei", routeName "307".

Input Schema

NameRequiredDescriptionDefault
cityYesCity: a TDX code (Taipei, NewTaipei, Taoyuan, Taichung, Tainan, Kaohsiung, Keelung, Hsinchu, HsinchuCounty, MiaoliCounty, ChanghuaCounty, NantouCounty, YunlinCounty, ChiayiCounty, Chiayi, PingtungCounty, YilanCounty, HualienCounty, TaitungCounty, KinmenCounty, PenghuCounty, LienchiangCounty) or its Chinese name (臺北市, 新北市, ...), or "InterCity" for 公路客運 / 國道客運 coaches between cities.
directionNoOnly one direction: "outbound" (去程) or "inbound" (返程). Default: both.
routeNameYesExact route name as TDX lists it, e.g. "307", "紅5", "1610". Find it with bus_route_search.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety and openness profile is covered. The description adds useful behavioral context beyond annotations: it is live data, includes vehicle status and last-stop information, and notes that low-floor/ramp data appears only where the city publishes its fleet.

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?

The description is front-loaded with the core purpose and a compact example. The single long sentence is dense but every clause describes a returned field or caveat, with no filler or repetition.

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?

There is no output schema, but the description enumerates the returned vehicle fields and gives example arguments. The schema covers city codes and routeName lookup guidance, so the definition is largely complete for an agent to call it correctly; only minor edge behavior such as empty results is unaddressed.

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%, so city, routeName, and direction are fully documented in the schema itself. The description only adds an example using city "Taipei" and routeName "307"; it does not add filtering or format semantics beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific live resource and scope: where buses on a route are right now, with enumerated returned fields such as position, speed, direction, status, accessibility, and last stop. It clearly distinguishes live vehicle tracking from static route/stop tools, though it does not explicitly name sibling alternatives like bus_eta or bus_stop_arrivals.

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

Usage Guidelines3/5

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

The phrase "right now" and the example with city and routeName imply live tracking on a known route. However, there is no explicit when-to-use or when-not guidance, and no routing to alternative sibling tools for arrival estimates or stop-level arrivals.

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