This server has 4 tools with basic definitions but significant quality gaps. Tool names follow the verb-noun convention (list_, search_, get_), which is good. However, input schemas are largely missing type information beyond basic strings, parameter descriptions are minimal or absent, and output schemas are not documented. The server exposes API keys in environment variables (correct pattern) but lacks structured output documentation and comprehensive error guidance. Baseline comparison: average tool definition quality across 549 production tools shows 18-char names (this server averages 16 chars, acceptable), but 100% of A+ tools have documented return types (this server has none) and 100% have param descriptions (this server lacks them on most params). The descriptions present are moderately informative but fall short of LLM-optimized 50-200 char guidance. No tool annotations (readOnlyHint, destructiveHint) despite all being READ_ONLY. All tools interact with an external API but lack detailed error recovery guidance.
Get the next 10 departures from a specific stop, optionally filtered by destination.
Returns a list of favorite stops with their names and IDs. Use this to quickly find common station IDs.
Search for routes between two stations within the next hour. Returns departure/arrival times, duration, and punctuality.
Search for a stop ID by its name.
Output schemas not documented. No tool describes what fields are returned or their types. LLMs cannot plan downstream calls or extract data without knowing response structure.
Input parameter descriptions missing or incomplete. 'search_route' params 'origin' and 'destination' have descriptions, but 'search_stops' param 'name' lacks format guidance. 'get_timetable' param 'destination' is marked 'string|null' without explaining the null case or optional behavior.
No structured error handling in tool docstrings. search_route and get_timetable call external APIs but provide no recovery guidance (e.g., 'Try search_stops first if stop name is ambiguous').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Tool annotations absent. All 4 tools are READ_ONLY (verified via Risk field), but no readOnlyHint is declared in tool registration. This prevents LLMs from optimizing retry and caching strategies.
search_route returns plain string (concatenated results). Production tools return structured arrays with per-item fields (route_number, departure_time, arrival_time, duration, delay, platform). String responses require LLM parsing and waste tokens.
No pagination guidance in list_favorite_ids or get_timetable descriptions, despite get_timetable returning 'next 10 departures'. No mention of total count, limit, offset, or cursor parameters.
Parameter type definitions incomplete in schema. get_timetable declares 'destination' as 'string|null' in the description but the actual JSON schema likely lacks oneOf or explicit null handling.