MCP server for hotel concierge services
Hotel Concierge MCP has clear, well-structured tool definitions with complete input schemas and descriptions. All 5 tools follow verb_noun naming (check_availability, make_reservation, get_reservation, cancel_reservation, submit_service_request). Descriptions are present and actionable (avg ~80 chars). However, critical gaps exist: (1) No output schemas documented, LLMs cannot predict response structure for downstream chaining; (2) Enum constraints missing, room_type and request_type accept free-form strings instead of constrained enums; (3) No error recovery guidance, error messages are bare strings without actionable next steps; (4) No idempotency or confirmation patterns for destructive operations (cancel_reservation); (5) Parameter descriptions lack format/constraint details (e.g., date format stated in docstring but not param description). Schemas are present and typed, but output documentation is absent.
Cancel a reservation.
Check room availability for given dates.
Look up a reservation by confirmation number.
Make a room reservation.
Submit a service request for a guest.
No output schemas documented. LLMs cannot predict response structure, breaking tool chaining and forcing parse-on-sight reasoning.
Enum constraints missing for room_type and request_type parameters. Free-form strings invite hallucinated values (e.g., 'penthouse', 'valet_parking').
Error responses lack recovery guidance. 'No rooms available' tells LLM nothing, should suggest 'Try alternative dates or room types' or offer search_availability with different params.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
cancel_reservation lacks confirmation or dry-run pattern. Destructive operation should support 'confirm_before_execute' to prevent accidental cancellations.
Parameter descriptions in tool docstrings but not in schema. Date format (YYYY-MM-DD) stated in docstring only, LLMs cannot read docstrings, only schema descriptions.