Skip to main content
Glama

bus_next_arrivals

Retrieve upcoming bus arrivals at a Carris Metropolitana stop, with real-time estimates when available and timetable fallback, optionally filtered by line.

Instructions

Upcoming buses at a Carris Metropolitana stop, real-time where available.

Use for "when is the next bus at X?" (get stop_id from bus_find_stops first). Each arrival says whether it is "realtime" (live GPS estimate) or "scheduled" (timetable only: the bus may not have started its trip yet). minutes_from_now uses the real-time estimate when present. Times are Europe/Lisbon. Only today's operational day is covered, so late at night the list may be short or empty.

Args: stop_id: 6-digit stop id, e.g. "060361". line_id: Optional 4-digit line number to keep only that line, e.g. "2794". limit: Max arrivals to return (default 10, max 50).

Input Schema

NameRequiredDescriptionDefault
limitNo
line_idNo
stop_idYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does it well: it explains the realtime vs scheduled distinction and the caveat that a scheduled bus may not have started its trip, that minutes_from_now prefers the real-time estimate, that times are Europe/Lisbon, that only today's operational day is covered, and that the list may be short or empty late at night.

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 purpose, then caveats, then args — no wasted sentences and the operational-day warning is placed where it will be read. The Args block restates parameter names already in the schema, which is slightly redundant, but the format constraints it adds justify its presence.

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?

An output schema exists, so return-value semantics needn't be spelled out here, and the behavioral caveats an agent needs to interpret an empty or short list are all present. Nothing material is missing for a 3-parameter read tool without annotations.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and does: stop_id is a 6-digit id with an example, line_id is an optional 4-digit line filter with an example, and limit is documented with default 10 and max 50 — the max is not in the schema at all.

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?

States a specific verb + resource + scope: 'Upcoming buses at a Carris Metropolitana stop, real-time where available.' The real-time qualifier distinguishes it from timetable/schedule siblings, and the tool is clearly not a stop finder (bus_find_stops) nor a vehicle-position feed (bus_vehicle_positions).

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

Usage Guidelines4/5

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

Gives an explicit trigger phrase ('when is the next bus at X?') plus the prerequisite workflow: obtain stop_id from bus_find_stops first. It does not, however, mention when a caller would prefer bus_vehicle_positions or bus_line_info instead, so there is no stated exclusion.

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