Skip to main content
Glama

Find Stops Near Location

onebusaway_find_stops
Read-only

Find bus stops near a location. Returns stops within a radius, each with ID, name, direction, served routes, and wheelchair boarding status. Use stopId values from results to fetch real-time arrivals with onebusaway_get_arrivals. Optionally filter by stop code (the number printed on the stop sign, e.g. "75403").

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
latYesLatitude of the search center, in [-90, 90].
lonYesLongitude of the search center, in [-180, 180].
queryNoOptional stop code filter (the number printed on the stop sign, e.g. "75403"). When provided, returns only stops matching this code within the radius.
radiusNoSearch radius in meters. Must be positive; capped at 1600m, beyond which results degrade. Defaults to 300m.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countNoNumber of stops returned.
errorNoPresent when the call failed. Absent on success.
queryNoStop code filter applied to the search, if any.
stopsNoStops within the search radius.
noticeNoGuidance when results are empty or truncated — e.g. how to narrow the radius or verify the stop code.
limitExceededNoTrue if more stops exist beyond the returned set; narrow the radius to see all.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so the read-only nature is already disclosed. The description adds value by enumerating the returned fields, which is beyond the annotations, but does not elaborate on potential edge cases (e.g., result limits, error behavior, or pagination). It is adequate but not rich in behavioral disclosure beyond what annotations and schema already provide.

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 concise — four short sentences, each adding essential information: purpose, return fields, downstream usage, and optional filter. It is front-loaded with the core purpose and avoids redundancy or filler. Every sentence earns its place.

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?

Given the tool's moderate complexity (4 parameters, all documented, output schema present) and the read-only annotation, the description covers everything needed for correct invocation: what it does, what it returns, how to use the results, and the optional filter. No missing guidance for an agent to call it correctly.

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 is already described in detail (ranges, defaults, exclusivity). The description reiterates the 'stop code' filter ('the number printed on the stop sign') which mirrors the schema. It adds no new semantic meaning beyond the schema; baseline of 3 is appropriate because the schema carries the full load.

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 and resource ('Find bus stops near a location') and lists the returned fields (ID, name, direction, served routes, wheelchair boarding status). This clearly distinguishes it from sibling tools like get_stop (single stop lookup) and search_stops (name/code based search), though it doesn't explicitly name them. The purpose is unambiguous.

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 description implies a location-based use case ('near a location') and provides downstream guidance to use onebusaway_get_arrivals with the returned stopId values. However, it does not explicitly state when to choose this tool over alternatives like search_stops or find_routes. Usage is implied rather than clearly delineated against siblings.

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.

TDQS

A4.2/5.0
Disambiguation5/5

Every tool targets a distinct operation: find_* for location-based search, search_* for text-based search, get_* for fetching by ID, list_* for enumeration, and get_arrivals for real-time vs get_schedule_for_* for scheduled data. Even similar pairs like find_routes/search_routes are clearly differentiated by their search mode.

Naming Consistency5/5

All tools follow a uniform `onebusaway_` prefix followed by a consistent verb pattern: find (location search), search (text search), get (retrieve by ID), list (enumerate), plus specific get_schedule_for_route/stop. Naming is entirely snake_case and logically structured.

Tool Count5/5

15 tools cover the full scope of a transit API without bloat: discovery (find/search), details (get), enumeration (list), real-time (arrivals/vehicles/trip), schedules, and alerts. Each tool serves a distinct purpose and fits within a typical well-scoped server.

Completeness5/5

The surface covers the primary travel workflows: finding routes/stops by location or name, retrieving full details, real-time arrivals/trip/vehicle tracking, scheduled departures for both routes and stops, service alerts, and agency enumeration. There are no obvious dead ends; each lookup provides IDs for follow-up queries.