Sustainable Travel & Weather Assistant using LangChain - provides real-time weather, flight options, eco-friendly travel routing, and user profile management
Greenway AI has 14 tools with basic naming and descriptions, but significant gaps in schema completeness, parameter documentation, and error handling. Tool names follow verb_noun convention (geocode, update_*, get_*), which is good. However, many parameters lack type information in visible schemas, descriptions are generic (10-50 chars for some), and output schemas are not documented. State management tools expose 'runtime' and 'state' as parameters, which is an anti-pattern. No error recovery guidance, no input validation hints, and no pagination support for list-like operations. This is a typical community server with functional tools but production-grade gaps.
Get exact latitude and longitude coordinates for an address, location or landmark.
Search for commercial flights via Duffel API.
Calculate ground routing between two lat/lng points using Google Routes API
Get the nearest (and alternative) airports to the given coordinates.
Retrieves all saved long-term facts for the current user.
Get the current weather for any city or region name.
State management tools expose 'runtime' and 'state' as parameters. These are framework internals, not user-facing inputs. LLMs cannot meaningfully provide these values; they should be injected server-side via InjectedState or ToolRuntime context.
Output schemas are not documented. Tools like get_flight_options, get_ground_route, and get_weather_* return data but LLMs cannot see the response structure. This forces agents to guess field names and risks context loss on chaining.
Parameter descriptions are generic or missing context. 'The location name' (geocode), 'Coordinates of the location' (get_nearest_airport), and 'The user's name' (update_user_profile) lack actionable detail. LLMs need format hints, constraints, and examples of when to use each tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Get the weather daily forecast for a city or region name during the upcoming days.
Get hourly weather forecast for a city or region name.
Saves a long-term fact about the user (e.g., name, travel preferences).
Updates the user's active trip details. Provide only the fields that need updating.
Updates the user's current weather context. Provide only the fields that need updating.
Updates the user's travel preferences. Provide only the fields that need updating.
Updates the user current location
Updates the user's name and/or preferred language in the system state.
No error handling or recovery guidance. Tools return errors (e.g. 'Geocoding failed for {location}') but do not tell the LLM what to do next. Should include: 'Try a more specific location name' or 'Check if the address is valid'.
No pagination or result limits documented. get_flight_options defaults to 5 results, but no max_results constraint is stated. Large result sets (e.g. 100+ flights) will bloat context. Should cap at 20-50 and document in description.