MCP server for managing travel itineraries
Server exposes 3 tools with complete input schemas and descriptions. Tool names follow verb_noun convention (Get_*, Create_*). Descriptions are present and substantive (150-250 chars), exceeding the 10-char minimum. However, parameter descriptions lack actionable constraints (enums, ranges, formats). Output schemas are documented in descriptions but not formally declared. Error handling is basic (404, 400, 500 codes mentioned but no recovery guidance). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Create_Itinerary lacks dry-run/confirmation despite being destructive. Parameter relationships (e.g., min_nights/max_nights interdependency) undocumented.
Create a new itinerary with associated days, hotel stays, and activities. Parameters: itinerary (ItineraryCreate): The itinerary data to create db (Session): Database session dependency Returns: ItineraryDetailed: Created itinerary with all related entities Raises: HTTPException: - 400 for validation or input errors - 500 for database errors during creation
Retrieve a list of itineraries with optional filtering parameters. Parameters: skip (int): Number of records to skip for pagination (default: 0) limit (int): Maximum number of records to return (default: 100) region (str, optional): Filter itineraries by region min_nights (int, optional): Filter itineraries with duration >= min_nights max_nights (int, optional): Filter itineraries with duration <= max_nights recommended (bool, optional): Filter by recommended status db (Session): Database session dependency Returns: List[ItinerarySchema]: List of matching itineraries
Retrieve detailed information for a specific itinerary by its ID. Parameters: itinerary_id (int): The ID of the itinerary to retrieve db (Session): Database session dependency Returns: ItineraryDetailed: Detailed representation of the itinerary including related data Raises: HTTPException: 404 if itinerary with specified ID does not exist
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Create_Itinerary is destructive but unmarked; Get_* tools are read-only but not annotated. LLMs cannot infer safety properties.
Parameter constraints missing. 'limit' accepts 0-100 but no min/max declared. 'skip' unbounded. 'duration_nights' in Create_Itinerary has no range. LLMs can pass invalid values (negative, zero, absurdly large).
Error responses lack recovery guidance. HTTPException(404, 'Itinerary not found') tells LLM nothing, should suggest 'Try Get_All_Itineraries to find valid IDs' or list available regions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Create_Itinerary is irreversible but lacks dry-run or confirmation step. No idempotency guarantee. Agents retrying on ambiguous failures risk duplicate itineraries.
Nested object schema (days array with day_number, transfer_id, hotel_id, activity_ids) lacks validation rules. No documentation of required vs optional fields, valid ranges for IDs, or error handling for invalid references.