Manage and recommend travel itineraries for Phuket and Krabi, Thailand.
This FastAPI server exposes 4 travel itinerary tools with basic HTTP endpoints. Tool names follow verb_noun convention (create_, get_) and descriptions are present but generic. Input schemas are visible and mostly complete, but parameter descriptions are minimal or missing context. Output schemas are not documented. Error handling is minimal (basic HTTPException). The server lacks pagination, result limits, and guidance for LLM recovery. No tool annotations (readOnlyHint, destructiveHint) are present. Overall structure is functional but falls short of production-grade agent tool standards.
Create a new travel itinerary with days, hotel accommodations, transfers, and activities
Get all itineraries
Get detailed information about a specific itinerary including days, accommodations, transfers, and activities
Get a recommended itinerary based on duration
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields without knowing response structure. create_itinerary returns ItineraryResponseSchema (inferred from code), but no schema definition is visible in tool registration.
Parameter descriptions are minimal or absent. 'duration' in get_recommended_itinerary has a description, but 'itinerary_id' in get_itinerary_details lacks context (is it required? what range?). LLMs cannot infer constraints from names alone.
No pagination or result limits. get_all_itineraries returns all records without limit or offset parameters. Large result sets will exhaust context windows and degrade LLM reasoning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. HTTPException(404, 'Itinerary not found') tells the LLM nothing about next steps. Should suggest alternatives: 'Itinerary not found. Try get_all_itineraries() to see available options.'
No tool annotations. create_itinerary is destructive (WRITE risk) but lacks destructiveHint annotation. get_* tools are read-only but lack readOnlyHint. Annotations help LLMs reason about safety and retry logic.