Exposes 4 tools to plan travel journeys: get coordinates, weather forecasts, place information from Wikipedia, and currency exchange rates. All APIs are free and require no API keys.
The server defines 4 tools with clear, action-verb names (get_coordinates, get_weather, get_place_info, get_currency_rate) and complete input schemas visible in the source. Descriptions are present and reasonably detailed (ranging 120 - 250 chars). However, several tools have minimal parameter descriptions, output schemas are not formally documented, and error handling lacks guidance for the LLM on recovery paths. No tool annotations (readOnlyHint, idempotentHint) are present. The tools are well-scoped and single-responsibility, which is a strength. Parameter constraints (ISO codes for currency) are documented in descriptions rather than enums, which weakens self-documentation.
Resolve a city name to geographic coordinates. Returns lat, lon, official name, country and timezone.
Get the latest exchange rate between two currencies. Useful for travel budget planning at each stop. Uses frankfurter.app – free, no key required.
Get a structured summary of a city from Wikipedia. Returns title, extract (short description), and article URL. Great for travellers who want to know what a place is famous for.
Get current weather and 3-day daily forecast for a city. Includes temperature, wind, precipitation probability and weather description.
Output schemas not formally documented. Tools return dicts with structures visible in code but not declared to the agent in tool metadata. The LLM cannot know what fields to expect without reading implementation.
Parameter descriptions are present but minimal. 'city' parameter in get_coordinates and get_weather has only a terse 'Name of the city' with examples. Missing guidance on format (free text vs. official names), expected behavior on disambiguation (what if multiple cities match?), or error cases.
Currency codes (base_currency, target_currency) are documented with 'ISO 4217 code, e.g. USD, EUR' but not declared as an enum or pattern constraint. LLMs may guess invalid codes; tool should reject with guidance or accept as string and validate internally.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Error handling lacks recovery guidance. Internal helper _geocode() raises ValueError on missing city but tools do not document error cases or how the LLM should respond (retry, ask user for clarification, search alternatives).
No tool annotations. All 4 tools are read-only and safe to retry, but readOnlyHint and idempotentHint are not declared in tool metadata. LLMs cannot distinguish safe from destructive tools without runtime learning.