Travel booking MCP server with TypeScript for searching and booking flights and hotels, managing user profiles, and processing payments
Concier has well-structured tool schemas with proper JSON Schema definitions and clear naming conventions. All 10 tools follow verb_noun patterns (search_flights, book_hotel, etc.). However, parameter descriptions are sparse, many lack context about format, constraints, or dependencies. Output schemas are not documented. Error handling guidance is minimal. The booking workflow (book_flight → generate_payment_link) is documented in the description but not enforced by the tool interface. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications.
Book a flight with passenger information. IMPORTANT: After a successful booking/hold, you MUST immediately call generate_payment_link with the order details.
Book a hotel room
Generate a secure payment link for completing flight or hotel booking payments
Get detailed information about a specific flight offer
Get detailed rate information for a specific hotel property
Check the payment status for a specific order
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., what does search_flights return? Does it include price, duration, airline?). Agents must guess structure.
Parameter descriptions lack format/constraint details. 'departure_date' says 'YYYY-MM-DD' but no validation guidance. 'phone_number' requires international format but no regex or example. LLMs cannot self-correct invalid input.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). book_flight and book_hotel are WRITE operations but unmarked. Agents cannot distinguish safe reads from irreversible writes.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Retrieve stored user profile information. Returns null/empty for new users - this is normal, not an error.
Search for flights between two locations
Search for hotels in a specific location
Update user profile information based on conversation data
Workflow dependency (book_flight MUST call generate_payment_link) is documented in description text, not enforced. No confirmation step or dry-run. Agents could book without payment, leaving orphaned orders.
Error handling guidance absent. No recovery hints (e.g., 'If flight not found, try search_flights with different dates'). Agents cannot self-correct on failures.