MCP server for StagePass event booking platform, providing tools for user authentication, event management, and ticket booking
18 tools with consistent naming (verb_noun pattern) and descriptions present. However, descriptions are often generic and lack actionable context. Parameter schemas are visible and typed, but descriptions are sparse (many under 50 chars). Output schemas are not documented. Error handling is minimal, no recovery guidance or categorization. Missing tool annotations (readOnlyHint, destructiveHint). Several tools accept UUIDs without accepting human-readable identifiers (e.g., event names, usernames), forcing extra lookup calls. Composition is reasonable but some tools combine concerns (e.g., 'Automatically handles login' suggests state management).
Get all bookings for a specific event. Requires ADMIN role. Automatically handles login if not authenticated.
Cancel an existing booking and release the seats. Automatically handles login if not authenticated.
Cancel an event (soft delete). Requires ADMIN role. Automatically handles login if not authenticated.
Book tickets for an event. Automatically handles login if not authenticated.
Create a new event in DRAFT status. Requires ORGANISER role. Automatically handles login if not authenticated.
Get details of a specific booking by ID. Automatically handles login if not authenticated.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., what fields does create_booking return? Does it include booking_id for chaining?). Violates pattern:tool and mxe:include-chaining-ids.
Tool descriptions lack actionable context. Most are 50 - 70 chars and generic (e.g., 'Get details of a specific booking by ID'). Missing WHEN to use, prerequisites, or dependencies. Violates pattern:tool-description baseline of 194 chars avg.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. cancel_booking and cancel_event are DESTRUCTIVE but unmarked. Violates current spec (2026-07-28) tool annotations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Get details of a specific event by ID. No login required.
Get all bookings for the currently logged in user. Automatically handles login if not authenticated.
Get the currently logged in user's profile. Automatically handles login if not authenticated.
Get the payment charge details for a specific booking. Requires ADMIN role. Automatically handles login if not authenticated.
Get a paginated list of published events, optionally filtered. No login required.
[FALLBACK ONLY] Manually log in to StagePass. NOTE: You usually DO NOT need to call this. Protected tools will automatically prompt the user for credentials if they are not logged in. Only use this tool if the user explicitly asks you to log them in and provides their credentials in the chat.
Log out the currently authenticated user by clearing the session.
Publish an event (transitions from DRAFT to PUBLISHED). Requires ORGANISER role. Automatically handles login if not authenticated.
[FALLBACK ONLY] Manually refresh the authentication session. NOTE: You usually DO NOT need to call this. Protected tools handle token expiration automatically.
Register a new StagePass account. You only need to provide the email and username. The tool will automatically prompt the user securely for their password via the MCP client UI. Do NOT ask for the password in the chat.
Update an existing event. Requires ORGANISER role. Automatically handles login if not authenticated.
Update the currently logged in user's profile. Automatically handles login if not authenticated.
All event/booking lookups require UUID (eventId, booking_id). No support for human-readable identifiers (event name, booking reference). Forces extra lookup calls and mismatches chat data model. Violates mxe:natural-identifiers and mxe:chat-data-model.
No error handling guidance. Tools lack recovery hints (e.g., 'User not found. Try search_users() first.'). No error categorization (retryable vs user-fixable vs fatal). Violates pattern:recovery-guide and pattern:error-classification.