Model Context Protocol server for Eventbrite API integration. Create and manage events using natural language through AI agents like Claude Desktop and Cursor IDE.
The server defines 10 tools with explicit schemas and descriptions visible in index.ts. Tool names follow verb_noun convention (create_event, list_events, get_event, update_event, publish_event, cancel_event, delete_event, delete_canceled_events, list_categories, create_venue). Descriptions are present for all tools and most parameters. However, several significant gaps reduce quality: (1) Output schemas are not documented, responses are not visible in the code sample; (2) Parameter descriptions exist but lack actionable constraints (e.g., timezone, status enums not listed; currency codes not enumerated); (3) No error handling guidance visible in tool definitions; (4) delete_event and delete_canceled_events lack confirmation mechanisms despite being destructive; (5) delete_canceled_events has a boolean 'confirm' parameter but no guidance on what confirmation means; (6) API responses are not stripped of verbose metadata, no mention of pagination limits or result caps. Tool names are clear and action-oriented, avoiding generic terms like 'process' or 'handle'. Composition is reasonable, tools are mostly single-purpose, though create_event does venue creation internally rather than delegating to create_venue separately.
Cancel an event
Create a new event on Eventbrite
Create a new venue
Delete all events that are marked as canceled
Delete an event (permanently removes the event)
Get details of a specific event
List available event categories
Output schemas not documented. Tool definitions show input schemas but no documented return types or field structures. LLMs cannot plan downstream chaining (e.g., get_event returns event_id but this is not declared, forcing LLMs to guess what fields exist).
Destructive tools (delete_event, delete_canceled_events) lack confirmation mechanism or dry-run pattern. delete_canceled_events has a 'confirm' boolean but no guidance on pre-execution validation or recovery options. Agents should be able to preview what will be deleted before committing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 17 | - | v1 |
List events for the authenticated user or organization
Publish a draft event to make it live
Update an existing event
Parameter constraints are under-specified. 'timezone' accepts free-form strings ('America/New_York, Europe/London') but does not enumerate valid values. 'status' in list_events ('live, draft, canceled, etc.') lacks an enum. 'order_by' should be an enum, not a free-form string. Currency codes should be enumerated (USD, EUR, GBP, etc.). LLMs will hallucinate invalid values.
No error handling guidance visible in tool definitions. Descriptions do not explain what happens on failure (e.g., 'If timezone is invalid, the API returns 400. Call list_categories to see valid timezones.' or 'If event_id not found, try list_events() first'). Descriptions state WHAT tools do but not WHEN to use them or how to recover from errors.
delete_canceled_events has a boolean 'confirm' parameter but its semantics are unclear. Does 'confirm: true' mean 'delete without asking'? Should it be checked server-side against current user's role? The description 'Set to true to confirm deletion of all canceled events' is a pattern anti-pattern, agents should not be responsible for confirmation logic. Implement server-side validation.
create_event accepts venue parameters (venue_name, venue_address, venue_city, venue_region, venue_postal_code, venue_country) inline, but a separate create_venue tool exists. This creates redundancy and unclear composition, should agents use create_venue first or pass inline? If inline, venue creation is not idempotent (each call to create_event may create duplicate venues). Clarify the relationship or use venue_id exclusively.
Parameter descriptions lack actionable format/constraint details. 'start_date' and 'end_date' say 'ISO 8601 format (e.g., 2024-12-25T10:00:00)' but do not specify timezone handling, whether seconds are required, or range bounds. 'capacity' has no minimum/maximum. 'page' defaults to 1 but no mention of max page number or total pages. LLMs lack concrete constraints and will pass invalid values.
No pagination guidance visible. list_events accepts 'page' but description does not specify page size, total available pages, or result count limits. Large result sets risk context explosion. Descriptions should state: 'Returns max 50 events per page' or similar cap.