Skip to content

Eventbrite MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Manage Eventbrite events, ticket classes, venues and discounts; read attendees, orders and reports.

Deletes · 10Changes · 1

26 tools: 10 can delete or cancel things, 1 change things and 15 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http eventbrite https://eventbrite.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The description contains "every other tool", wording about other tools or servers.

    Matched text

    description: "...ganizations you are a member of. Almost every other tool needs an organization_id from here. Eve..."

    What this check looks for
  • The server marks "eventbrite_list_discounts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "eventbrite_list_discounts" says "list": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

26 tools

Deletes or cancels 10Claude Code: deny
  • eventbrite_copy_eventDuplicate an event (tickets, payment options, refund policy, tax settings) into a new event with a new ID, optionally with a new name and dates.No findings

    Why it is in this group

    • The name "eventbrite_copy_event" says "copy": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Duplicate an event (tickets, payment options, refund policy, tax settings) into a new event with a new ID, optionally with a new name and dates. Eventbrite: POST /events/{event_id}/copy/.

    Annotations the server declares

    • title: Copy an event
    • destructiveHint: true
  • eventbrite_create_discountCreate a promo code (type=coded), a public discount (type=public, single event) or an access code that unlocks hidden tickets (type=access).No findings

    Why it is in this group

    • The name "eventbrite_create_discount" says "create": a word for a change.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a promo code (type=coded), a public discount (type=public, single event) or an access code that unlocks hidden tickets (type=access). Scope: event_id (+ticket_class_ids) for one event, ticket_group_id for a group, neither for all the organization's events. Eventbrite: POST /organizations/{organization_id}/discounts/.

    Annotations the server declares

    • title: Create a discount or access code
    • destructiveHint: true
  • eventbrite_create_eventCreate a new event as a DRAFT (not visible or on sale until eventbrite_publish_event).No findings

    Why it is in this group

    • The name "eventbrite_create_event" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a new event as a DRAFT (not visible or on sale until eventbrite_publish_event). Add tickets with eventbrite_create_ticket_class before publishing. Eventbrite: POST /organizations/{organization_id}/events/.

    Annotations the server declares

    • title: Create a draft event
    • destructiveHint: true
  • eventbrite_create_ticket_classAdd a ticket type to an event.No findings

    Why it is in this group

    • The name "eventbrite_create_ticket_class" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Add a ticket type to an event. Paid: set cost like "USD,2500" and capacity. Free: free=true and capacity. Eventbrite: POST /events/{event_id}/ticket_classes/.

    Annotations the server declares

    • title: Create a ticket class
    • destructiveHint: true
  • eventbrite_create_venueSave a new venue under an organization, to use as an event's venue_id.No findings

    Why it is in this group

    • The name "eventbrite_create_venue" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Save a new venue under an organization, to use as an event's venue_id. Eventbrite: POST /organizations/{organization_id}/venues/.

    Annotations the server declares

    • title: Create a venue
    • destructiveHint: true
  • eventbrite_publish_eventMake a draft event live so tickets go on sale.No findings

    Why it is in this group

    • The name "eventbrite_publish_event" says "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Make a draft event live so tickets go on sale. Needs a name, organizer, at least one ticket class and valid payment options. Undo with eventbrite_unpublish_event while there are no orders. Eventbrite: POST /events/{event_id}/publish/.

    Annotations the server declares

    • title: Publish an event
    • destructiveHint: true
  • eventbrite_unpublish_eventTake a published event back to unpublished.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Take a published event back to unpublished. Only allowed while it has no pending or completed orders (or, for paid events, once completed and paid out). Eventbrite: POST /events/{event_id}/unpublish/.

    Annotations the server declares

    • title: Unpublish an event
    • destructiveHint: true
  • eventbrite_update_discountChange a discount or access code (amount, uses, dates, scope); only the fields you pass are sent.No findings

    Why it is in this group

    • The name "eventbrite_update_discount" says "update": a word for a change.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change a discount or access code (amount, uses, dates, scope); only the fields you pass are sent. Eventbrite: POST /discounts/{discount_id}/.

    Annotations the server declares

    • title: Update a discount
    • destructiveHint: true
  • eventbrite_update_eventChange fields of an existing event; only the fields you pass are sent.No findings

    Why it is in this group

    • The name "eventbrite_update_event" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change fields of an existing event; only the fields you pass are sent. Changing start/end needs timezone too. Eventbrite: POST /events/{event_id}/.

    Annotations the server declares

    • title: Update an event
    • destructiveHint: true
  • eventbrite_update_ticket_classChange a ticket type (name, price, capacity, sales window, visibility); only the fields you pass are sent.No findings

    Why it is in this group

    • The name "eventbrite_update_ticket_class" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change a ticket type (name, price, capacity, sales window, visibility); only the fields you pass are sent. The price cannot change after tickets are sold. Eventbrite: POST /events/{event_id}/ticket_classes/{ticket_class_id}/.

    Annotations the server declares

    • title: Update a ticket class
    • destructiveHint: true
Changes things 1Claude Code: ask
  • eventbrite_list_discountsSearch an organization's discounts and access codes, with quantity_sold.1 finding

    Why it is in this group

    • The name "eventbrite_list_discounts" says "list": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "eventbrite_list_discounts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "eventbrite_list_discounts" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Search an organization's discounts and access codes, with quantity_sold. scope=event needs event_id; multi_events = cross-event discounts; user = all of the organization's. Eventbrite: GET /organizations/{organization_id}/discounts/.

    Annotations the server declares

    • title: List discounts
    • readOnlyHint: true
Only reads 15Claude Code: allow
  • eventbrite_get_attendeeFetch one attendee of an event, including check-in state (checked_in, barcodes[].status), answers and cost breakdown.No findings

    Why it is in this group

    • The name "eventbrite_get_attendee" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one attendee of an event, including check-in state (checked_in, barcodes[].status), answers and cost breakdown. Eventbrite: GET /events/{event_id}/attendees/{attendee_id}/.

    Annotations the server declares

    • title: Get an attendee
    • readOnlyHint: true
  • eventbrite_get_attendee_reportAttendee report for one or more events: number of attendees and orders per time bucket, optionally grouped.No findings

    Why it is in this group

    • The name "eventbrite_get_attendee_report" says "get": a word for reading.
    Description, as the server wrote it
    Attendee report for one or more events: number of attendees and orders per time bucket, optionally grouped. Eventbrite: GET /reports/attendees/.

    Annotations the server declares

    • title: Get an attendee report
    • readOnlyHint: true
  • eventbrite_get_capacityFetch the event capacity tier: capacity_total, capacity_sold, capacity_pending, quantity_total and capacity holds.No findings

    Why it is in this group

    • The name "eventbrite_get_capacity" says "get": a word for reading.
    Description, as the server wrote it
    Fetch the event capacity tier: capacity_total, capacity_sold, capacity_pending, quantity_total and capacity holds. Eventbrite: GET /events/{event_id}/capacity_tier/.

    Annotations the server declares

    • title: Get an event's capacity
    • readOnlyHint: true
  • eventbrite_get_eventFetch one event: name, summary, start/end, status, capacity, venue_id, listing settings.No findings

    Why it is in this group

    • The name "eventbrite_get_event" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one event: name, summary, start/end, status, capacity, venue_id, listing settings. Use expand=venue,ticket_classes for more. Eventbrite: GET /events/{event_id}/.

    Annotations the server declares

    • title: Get an event
    • readOnlyHint: true
  • eventbrite_get_event_descriptionFetch the fully rendered HTML description of an event (summary plus the page modules).No findings

    Why it is in this group

    • The name "eventbrite_get_event_description" says "get": a word for reading.
    Description, as the server wrote it
    Fetch the fully rendered HTML description of an event (summary plus the page modules). Eventbrite: GET /events/{event_id}/description/.

    Annotations the server declares

    • title: Get an event's full description
    • readOnlyHint: true
  • eventbrite_get_meFetch the Eventbrite user the token belongs to (name, emails).No findings

    Why it is in this group

    • The name "eventbrite_get_me" says "get": a word for reading.
    Description, as the server wrote it
    Fetch the Eventbrite user the token belongs to (name, emails). A cheap way to confirm the token works. Eventbrite: GET /users/me/.

    Annotations the server declares

    • title: Get my user
    • readOnlyHint: true
  • eventbrite_get_orderFetch one order.No findings

    Why it is in this group

    • The name "eventbrite_get_order" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one order. Use expand=attendees,event to include its tickets and event. Eventbrite: GET /orders/{order_id}/.

    Annotations the server declares

    • title: Get an order
    • readOnlyHint: true
  • eventbrite_get_sales_reportSales report for one or more events: gross, net, fees, royalty and quantity per time bucket, optionally grouped (by ticket, payment method, country, ...).No findings

    Why it is in this group

    • The name "eventbrite_get_sales_report" says "get": a word for reading.
    Description, as the server wrote it
    Sales report for one or more events: gross, net, fees, royalty and quantity per time bucket, optionally grouped (by ticket, payment method, country, ...). Eventbrite: GET /reports/sales/.

    Annotations the server declares

    • title: Get a sales report
    • readOnlyHint: true
  • eventbrite_list_attendeesList attendees (one per sold ticket) of one event OR of all of an organization's events.No findings

    Why it is in this group

    • The name "eventbrite_list_attendees" says "list": a word for reading.
    Description, as the server wrote it
    List attendees (one per sold ticket) of one event OR of all of an organization's events. Each attendee carries checked_in, cancelled, refunded, status, ticket_class_name, profile and barcodes (status unused/used). Pass exactly one of event_id / organization_id. Eventbrite: GET /events/{event_id}/attendees/ or GET /organizations/{organization_id}/attendees/.

    Annotations the server declares

    • title: List attendees
    • readOnlyHint: true
  • eventbrite_list_eventsList the events of an organization, filterable by status, name and past/upcoming.No findings

    Why it is in this group

    • The name "eventbrite_list_events" says "list": a word for reading.
    Description, as the server wrote it
    List the events of an organization, filterable by status, name and past/upcoming. Eventbrite: GET /organizations/{organization_id}/events/.

    Annotations the server declares

    • title: List an organization's events
    • readOnlyHint: true
  • eventbrite_list_inventory_tiersList the inventory tiers of a tiered or reserved-seating event, with quantity_total, quantity_sold, quantity_pending and linked ticket_class_ids.No findings

    Why it is in this group

    • The name "eventbrite_list_inventory_tiers" says "list": a word for reading.
    Description, as the server wrote it
    List the inventory tiers of a tiered or reserved-seating event, with quantity_total, quantity_sold, quantity_pending and linked ticket_class_ids. Eventbrite: GET /events/{event_id}/inventory_tiers/.

    Annotations the server declares

    • title: List an event's inventory tiers
    • readOnlyHint: true
  • eventbrite_list_ordersList orders of one event OR of all of an organization's events: buyer name/email, status, costs.No findings

    Why it is in this group

    • The name "eventbrite_list_orders" says "list": a word for reading.
    Description, as the server wrote it
    List orders of one event OR of all of an organization's events: buyer name/email, status, costs. Pass exactly one of event_id / organization_id. Eventbrite: GET /events/{event_id}/orders/ or GET /organizations/{organization_id}/orders/.

    Annotations the server declares

    • title: List orders
    • readOnlyHint: true
  • eventbrite_list_organizationsList the organizations you are a member of.1 finding

    Why it is in this group

    • The name "eventbrite_list_organizations" says "list": a word for reading.

    Findings

    • Warn

      The description contains "every other tool", wording about other tools or servers.

      Matched text

      description: "...ganizations you are a member of. Almost every other tool needs an organization_id from here. Eve..."

      What this check looks for
    Description, as the server wrote it
    List the organizations you are a member of. Almost every other tool needs an organization_id from here. Eventbrite: GET /users/me/organizations/.

    Annotations the server declares

    • title: List my organizations
    • readOnlyHint: true
  • eventbrite_list_ticket_classesList the ticket types of an event with price, capacity, quantity_sold and sales window.No findings

    Why it is in this group

    • The name "eventbrite_list_ticket_classes" says "list": a word for reading.
    Description, as the server wrote it
    List the ticket types of an event with price, capacity, quantity_sold and sales window. Eventbrite: GET /events/{event_id}/ticket_classes/.

    Annotations the server declares

    • title: List an event's ticket classes
    • readOnlyHint: true
  • eventbrite_list_venuesList the saved venues of an organization, with address and capacity.No findings

    Why it is in this group

    • The name "eventbrite_list_venues" says "list": a word for reading.
    Description, as the server wrote it
    List the saved venues of an organization, with address and capacity. Eventbrite: GET /organizations/{organization_id}/venues/.

    Annotations the server declares

    • title: List an organization's venues
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http eventbrite https://eventbrite.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__eventbrite__eventbrite_get_me",
      "mcp__eventbrite__eventbrite_list_organizations",
      "mcp__eventbrite__eventbrite_list_events",
      "mcp__eventbrite__eventbrite_get_event",
      "mcp__eventbrite__eventbrite_get_event_description",
      "mcp__eventbrite__eventbrite_list_ticket_classes",
      "mcp__eventbrite__eventbrite_list_venues",
      "mcp__eventbrite__eventbrite_list_attendees",
      "mcp__eventbrite__eventbrite_get_attendee",
      "mcp__eventbrite__eventbrite_list_orders",
      "mcp__eventbrite__eventbrite_get_order",
      "mcp__eventbrite__eventbrite_get_capacity",
      "mcp__eventbrite__eventbrite_list_inventory_tiers",
      "mcp__eventbrite__eventbrite_get_sales_report",
      "mcp__eventbrite__eventbrite_get_attendee_report"
    ],
    "ask": [
      "mcp__eventbrite__eventbrite_list_discounts"
    ],
    "deny": [
      "mcp__eventbrite__eventbrite_create_event",
      "mcp__eventbrite__eventbrite_update_event",
      "mcp__eventbrite__eventbrite_copy_event",
      "mcp__eventbrite__eventbrite_publish_event",
      "mcp__eventbrite__eventbrite_unpublish_event",
      "mcp__eventbrite__eventbrite_create_ticket_class",
      "mcp__eventbrite__eventbrite_update_ticket_class",
      "mcp__eventbrite__eventbrite_create_venue",
      "mcp__eventbrite__eventbrite_create_discount",
      "mcp__eventbrite__eventbrite_update_discount"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as eventbrite. Review it before you use it.