MCP server for the Galaxium Travels booking system, providing tools to manage flights, bookings, and user registrations
The server has 6 well-named tools with clear action verbs (list_, book_, get_, cancel_, register_, get_) that follow verb_noun conventions. Descriptions are present for all tools and range from 127 - 234 characters, within the baseline range (p10=34, p90=392). All 6 tools have input schemas with typed parameters (integer, string) and parameter descriptions. However, there are notable gaps: (1) Output schemas are not documented, the descriptions say what is returned (e.g., 'Returns a list of flights') but no structured output schema is visible in the code. (2) Parameter descriptions lack detail on constraints, ranges, or formats (e.g., no mention of what makes a valid email, what ID ranges are expected, or whether flight_id must exist). (3) No pagination support on list_flights despite baseline expectation for list tools. (4) Error handling descriptions are minimal, tools mention they 'raise an error' but do not document recovery guidance or error types. (5) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear operational semantics (list_flights and get_bookings are read-only; book_flight, register_user, cancel_booking are write/reversible). The server is functional but lacks the polish expected for A-grade tools.
Book a seat on a specific flight for a user. Requires user_id, name, and flight_id. Decrements available seats if successful. Returns booking details or raises an error if booking is not possible.
Cancel an existing booking by its booking_id. Increments available seats for the flight if successful. Returns updated booking details or raises an error if already cancelled or not found.
Retrieve all bookings for a specific user by user_id. Returns a list of booking details for the user.
Retrieve a user's information, including user_id, by providing both name and email. Returns user details or raises an error if not found.
List all available flights. Returns a list of flights with origin, destination, times, price, and seats available.
Output schemas not documented. Descriptions state 'Returns a list of flights with origin, destination, times, price, and seats available' but no JSON Schema output format is provided. LLMs cannot reliably parse unstructured responses or plan downstream operations without knowing field types and names.
Parameter descriptions lack constraint details. E.g., 'user_id' (integer) has no min/max bounds, 'email' has no format constraint or validation hint, 'flight_id' does not indicate whether it must exist or what valid ranges are. LLMs cannot validate inputs or construct calls without these details.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). list_flights and get_bookings should be marked read-only; book_flight and register_user should be destructive; cancel_booking should be marked reversible. These annotations enable agents to understand safety semantics without parsing descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 72 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | 2025-11-25+ | v1 |
Register a new user with a name and unique email. Returns the created user's details or raises an error if the email is already registered.
list_flights has no pagination support. No limit or offset/page parameters, no total count in response. Per pattern baselines, list tools should accept pagination to avoid blowing context windows. Baseline expectation: paginated-result pattern.
Error handling lacks recovery guidance. Tools describe errors as 'raises an error' or 'returns an error if not found' but do not tell LLMs what to do next (e.g., 'Call register_user first if user does not exist'). Per pattern:recovery-guide, error responses must guide the agent's next step.