Create and run Eventbrite events end to end: events, tickets, inventory, discounts, orders, attendees, venues and webhooks, plus triggers on orders, check-ins and event changes.
Eventbrite ships in the w6w first-party pack. It declares 93 actions, 2 health checks, and the host runs its code in a sandbox that never sees the credential.
io.w6w.eventbriteEventbrite covers the whole event lifecycle from a workflow: create, update, copy, publish, unpublish, cancel and delete events, set their description and structured content, and add schedules to event series. Ticket classes, ticket groups, inventory tiers, capacity and seat maps can be read and changed, as can discounts, display settings and the checkout questions a buyer answers.
On the sales side it lists and fetches orders and attendees, refunds orders, and pulls sales and attendee reports. Venues, organizers, organization members and roles, event teams, categories, formats and media are available too, and organization webhooks can be created, listed and deleted.
Sixteen triggers start a workflow when something happens in Eventbrite: a new order, a refund, an attendee checking in or out, an event created, published, updated or unpublished, a ticket class, organizer or venue changing, or any chosen mix of these. Subscribing registers the webhook with Eventbrite and unsubscribing removes it, and each run receives the full order, attendee or event record, not just a notification.
A fit for publishing events from a CRM or content system, keeping attendee and order data in sync with a spreadsheet, opening a discount code when a campaign starts, or following up once an event’s attendee list is known. Uploading an image is the one step that needs outside help: Eventbrite sends the file to a separate storage host, which this app cannot reach.
Three routes to the same 93 actions. The Workflow tab is generated from Eventbrite's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.
add-ticket-class-to-ticket-groups Set which of an organization's ticket groups contain a ticket class. Leave the group list empty to remove the ticket class from every ticket group of the organization.
calculate-item-price Calculate the fees, taxes and total price Eventbrite would charge for a hypothetical base price (POST, but read-only: nothing is created or changed).
cancel-event Cancel an event on Eventbrite. Fails if the event has pending or completed orders. Canceling a series parent cancels all occurrences.
check-team-password Verify a team's password; if correct, returns the team token. Makes no change on Eventbrite.
copy-event Duplicate an event on Eventbrite, creating a new event with a new ID. Payment options, payout method, refund policy and tax settings are copied. Optionally override name, dates, timezone and summary on the copy.
create-custom-question Creates a custom registration question on the event on Eventbrite.
create-default-question Creates a default (canned) registration question on the event on Eventbrite.
create-discount Create a new Discount (coded, access, public or hold) for an Organization on Eventbrite.
create-event Create a new draft event in an organization on Eventbrite. Set Series parent to create a recurring-event parent, then add occurrences with Create Event Schedule. Publish it separately.
create-event-schedule Add occurrences to a series parent event on Eventbrite according to an iCalendar recurrence rule. Occurrences matching an existing date/time are skipped.
create-inventory-tier Create a new Inventory Tier on an Event on Eventbrite (use create-multiple-inventory-tiers for several at once).
create-multiple-inventory-tiers Create several Inventory Tiers on an Event on Eventbrite in one request.
create-seat-map Create the Seat Map of a new reserved-seating Event on Eventbrite by copying an existing Seat Map. Errors if the event already has one.
create-text-overrides Set custom ticket-page text for an organization, venue or event. Each entry replaces a text code with a custom message or another default message code. If no locale is given, the event's locale is used when an event ID is set, otherwise the default locale. Changes the text shown to buyers on Eventbrite.
create-ticket-group Create a ticket group in an organization on Eventbrite (max 300 live groups per organization).
create-webhook Create a webhook on an organization. Eventbrite will POST to the endpoint URL whenever one of the chosen actions occurs (optionally limited to one event). Creates a new webhook on Eventbrite.
delete-custom-question Deletes a custom question from the event on Eventbrite.
delete-default-question Deactivates a default (canned) question on the event on Eventbrite.
delete-discount Permanently delete an unused Discount on Eventbrite. A deleted Discount cannot be restored; used Discounts cannot be deleted.
delete-event Permanently delete an event on Eventbrite. Fails if the event has pending or completed orders. Deleting a series parent deletes all occurrences.
delete-inventory-tier Mark an Inventory Tier as deleted on Eventbrite. Fails if attendees or seat assignments reference it.
delete-ticket-group Delete a ticket group on Eventbrite (its status becomes `deleted`).
delete-webhook Delete a webhook by ID. Permanently removes the webhook from Eventbrite.
get-capacity-tier Retrieve the capacity tier (total capacity and general admission holds) for an event.
get-default-question Retrieve a default (canned) question of an event by its ID (e.g. `email`).
get-display-settings Retrieve the display settings (what the event listing shows) for an event.
get-event-description Retrieve the fully rendered HTML description of an event.
get-media Retrieve an uploaded media image by ID, optionally as a thumbnail of a given size.
get-media-upload Step 1 of 3 of an Eventbrite image upload. Returns the upload instructions (storage URL, form fields and an upload token) for the chosen image type. Step 2, which this app does not perform, is uploading the file bytes to the returned storage URL. Step 3 is the Upload Media action, which finalizes the upload with the upload token and returns the media ID.
get-refund-retention-policy Check whether the Eventbrite service fee is retained when refunding an order for a given reason. Call before Refund Order.
get-structured-content Retrieve an event's structured content (description modules and widgets): the latest published version, or the latest working version (published or not).
get-text-overrides Retrieve the text overrides for an organization in a locale, optionally filtered to an event or venue.
get-ticket-buyer-settings Retrieve the ticket buyer settings (confirmation message, instructions, registration survey, refund requests) for an event.
list-default-questions List the default (canned) registration questions for an event.
list-events List events for an organization (default), a venue, or an event series. Walks one page; pass back `continuation` to get the next.
list-fee-rates List Eventbrite pricing fee rates for a country and currency, optionally narrowed by plan, payment type, channel and item type.
list-inventory-tiers List the Inventory Tiers of an Event, optionally filtered by seat map number or event-capacity counting.
list-organizations List the organizations a user belongs to (the connected user by default).
list-organizers List organizers belonging to an organization. Organizers are the public-facing event hosts (logo, bio, social links) — distinct from Organizations.
list-seat-maps List the Seat Maps of an Organization, optionally filtered by venue. The response is not paginated yet.
publish-event Publish a draft event on Eventbrite, making it live. Requires a name, description, organizer, at least one ticket and valid payment options. Publishing a series parent publishes all occurrences.
refund-order Fully refund an order on Eventbrite. This issues a refund (money moves) and cannot be undone. Limited availability: only for organizations Eventbrite has granted access.
search-discounts List Discounts of an Organization by scope, with optional code, type, event and ordering filters.
set-structured-content Create or replace the structured content (description modules) of an event for a given page version on Eventbrite. Send the full current module set; enable Publish to make it visible on the public event page.
unpublish-event Unpublish a live event on Eventbrite. Fails if the event has pending or completed orders (with limited exceptions for completed paid events). Unpublishing a series parent unpublishes all occurrences.
update-capacity-tier Update an event's capacity tier on Eventbrite: total capacity and/or create, update or delete general admission capacity holds. Partial updates are supported.
update-default-question Modifies a default (canned) question of the event on Eventbrite. The blueprint path uses singular /event/; we use /events/.
update-discount Update a Discount by ID on Eventbrite. Supplied fields are sent as the discount object.
update-display-settings Update the display settings of an event on Eventbrite (changes what the public event listing shows).
update-event Update an event on Eventbrite. Only the fields you set are changed. On a series parent, name, description, currency, capacity and similar fields cascade to every occurrence. Start/end require a timezone.
update-inventory-tier Partially update an existing Inventory Tier on Eventbrite; only the fields you supply change.
update-multiple-inventory-tiers Partially update several existing Inventory Tiers on an Event on Eventbrite in one request.
update-ticket-buyer-settings Update the ticket buyer settings of an event on Eventbrite (post-purchase messages, registration survey, refund requests).
update-ticket-class Update a ticket class of an Eventbrite event. Only fields you supply are sent.
upload-media Step 3 of 3 of an Eventbrite image upload: finalizes the upload and creates the media record, returning its ID. Before calling it, run Get Media Upload Instructions, then upload the file to the storage URL it returns (a step this app does not perform), and pass the same upload token here. An optional crop window can be applied. Creates a media item on Eventbrite.
A workflow step names the app and the action, and the editor fills in the
connection when you pick one. This is the Step shape from the
workflow spec, carrying Eventbrite's real ids.
{
"manifestVersion": "2",
"name": "eventbrite-example",
"steps": [
{
"id": "add-ticket-class-to-ticket-groups",
"uses": {
"app": "io.w6w.eventbrite",
"action": "add-ticket-class-to-ticket-groups",
"connection": "conn_YOUR_CONNECTION_ID"
},
"with": {
"organizationId": "<organizationId>",
"eventId": "<eventId>",
"ticketClassId": "<ticketClassId>"
}
}
]
}add-ticket-class-to-ticket-groups calculate-item-price check-team-password copy-event create-custom-question +88 more actions available
Every app-specific value here is a blank you have to fill in. An
app action is reached through the connection that authenticates it, so the
address is a connection id, not the app id — and connections belong to your account,
so a public page cannot know yours. Create one for Eventbrite, then fill in
the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the
parameters that action declares. The call itself is real — the shape is transcribed
from the studio's own snippet builder, which prints the same kind of blanks — but
nothing in it is specific to Eventbrite. The Workflow tab is where this app's
real ids are.
npm install @w6w/sdkyarn add @w6w/sdkpnpm add @w6w/sdkdeno add npm:@w6w/sdkimport { W6wClient, isActionRun } from "@w6w/sdk";
// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();
const envelope = await client.run({
urn: "conn_YOUR_CONNECTION_ID",
action: "list-events",
payload: {
// scope: "<value>",
// scopeId: "<value>",
// organizationId: "<value>",
// status: "<value>",
// nameFilter: "<value>",
// timeFilter: "<value>",
// showSeriesParent: "<value>",
// orderBy: "<value>",
// onlyPublic: "<value>",
// startDateRangeStart: "<value>",
// startDateRangeEnd: "<value>",
// pageSize: "<value>",
// continuation: "<value>",
// expand: "<value>",
},
});
if (isActionRun(envelope)) console.log(envelope.value); npm install -g @w6w/cli w6w run conn_YOUR_CONNECTION_ID --action list-events --payload '{}' Give an AI agent Eventbrite — without giving it Eventbrite's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.
One tool call{
"name": "w6w_invoke",
"arguments": {
"ref": "app:io.w6w.eventbrite#add-ticket-class-to-ticket-groups",
"input": {
"organizationId": "<organizationId>",
"eventId": "<eventId>",
"ticketClassId": "<ticketClassId>"
}
}
}
Every tool names its target with a single ref. The
app: form above doesn't name a connection at all — the
host resolves which of the caller's Eventbrite connections to sign
with, and refuses rather than guesses when the answer is ambiguous.
The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.
Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.
Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.
Eventbrite's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.
The MCP surface is part of the hosted platform. Eventbrite itself is MIT, and the runtime that executes it is source-available (FSL).
Eventbrite declares its own checks, so its health is a property of the app rather than something the host guesses at.
Hourly allowance remaining on this token, read off the `X-Rate-Limit-*` headers.