Eventzilla MCP server
20 operations0 webhooks
Read events, ticket types, orders and attendees, run the registration checkout, and check attendees in.
Try Eventzilla with your agent
Connect Eventzilla, then paste this into Claude, ChatGPT or Cursor. For ideas from other apps, see the use cases.
Using Corsair, show me what you can do in Eventzilla on my account, then run one read-only example and show me the result.
Eventzilla tools and triggers
Tools are what your agent can do in Eventzilla through Corsair's MCP server. Triggers are the Eventzilla events a routine can start from.
Checkout
- ConfirmWrite
Record the payment result and turn a filled checkout into a confirmed order. Emails the buyer unless `sendemail` is false. This is the step that completes a registration.
checkout.confirm
- CreateWrite
Reserve tickets and get one `ticket_price_id` per ticket plus a checkout id. The order stays incomplete until checkout.confirm, so an abandoned reservation holds inventory without charging anyone.
checkout.create
- Fill OrderWrite
Attach buyer and attendee details to a reserved checkout. Nothing is charged and no email is sent until checkout.confirm.
checkout.fillOrder
- PrepareRead-only
What is on sale for one event date — ticket types, availability, payment options and registration questions — and the `payment_id` the later steps need. Needs the event’s `dateid`, not its `id`.
checkout.prepare
Events
- AttendeesRead-only
Every attendee for one event with their barcode, ticket type, answers and check-in state. The route takes no paging parameters, so the whole list arrives at once.
events.attendees
- GetRead-only
One event by its `id`. Answers an array even for a single id; an unknown id gives an empty array, not an error.
events.get
- ListRead-only
The account's events, paged with offset. Filter by status (only "live" is accepted) or category, and page with the returned next_offset. An empty account answers HTTP 200 with {"message":"No events found"} rather than an array, which is read here as an empty page.
events.list
- TransactionsRead-only
Paid and pending orders for one event, with buyer, amount and reference. Paged by offset; next_offset comes back on the result.
events.transactions
Tickets
- CreateWrite
Add a free ticket type to an event. Paid pricing is not part of this route: the reference documents it as free ticket types only.
tickets.create
- ListRead-only
The ticket types on sale for one event, with price, quantity and sales window, plus any donation options.
tickets.list
- UpdateWrite
Change an existing free ticket type. Every field is required, because the API treats this as a full replace rather than a patch.
tickets.update
Attendees
- CheckinWrite
Check an attendee in, or revert their check-in, by ticket barcode. Passing `eventcheckin: true` twice is harmless.
attendees.checkin
- GetRead-only
One attendee by id, with their event, order reference and check-in state.
attendees.get
Orders
- CancelDestructive
Cancel an order. The order and its tickets stop standing and the buyer is not restored by any other call; issuing a replacement means a new checkout.
orders.cancel
- ConfirmWrite
Confirm an order after checkout. Emails the buyer unless `sendemail` is false. Confirming an already-confirmed order is the API’s own decision to make.
orders.confirm
Users
- GetRead-only
One organizer by id, in the same array envelope as the list.
users.get
- ListRead-only
The organizer account and its sub-organizers, paged by offset.
users.list
Categories
- ListRead-only
Event category names, for the `category` filter on events.list. Answers HTTP 200 with an error body rather than a 401 when the key is refused, which this plugin turns into an auth error.
categories.list
Sales
- ToggleWrite
Open or close ticket sales for an event. Closing a sold-out event this way is reversible by toggling back.
sales.toggle
Transactions
- GetRead-only
One order by checkout id or reference number. Verified live, this route does not filter: a small integer answers the account's most recent transaction, a real checkout id answers "Unauthorized access", and an unknown reference answers "Invalid reference number" (404). Check the returned refno before trusting it.
transactions.get
Connect Eventzilla to Claude, ChatGPT or Cursor
- 1
Connect Eventzilla in Corsair
Add your Eventzilla API key once in Corsair. Corsair stores the credential encrypted and makes the Eventzilla API calls for your agent, so it never goes into a prompt or a config file. Connect Eventzilla
If your link lets the agent add apps, you can skip this: it gives you a sign-in link the first time it needs Eventzilla. On a ChatGPT personal plan, connect Eventzilla here first.
- 2
Add Corsair's MCP server to your agent
Every client uses the same address:
https://mcp.corsair.dev/mcpOpen Customize → Connectors → Add custom connector, paste the address, then select Connect.Add a custom MCP server with the address and choose OAuth. Personal plans get read tools only.Add to CursorOr add this to~/.cursor/mcp.json. Cursor opens Corsair to sign in the first time it connects.{ "mcpServers": { "corsair": { "url": "https://mcp.corsair.dev/mcp" } } }Run this, then run/mcpin Claude Code to sign in.claude mcp add --transport http corsair https://mcp.corsair.dev/mcpCodex, Gemini CLI, VS Code, Zed and other clients with OAuth sign-in work the same way. Clients without it, such as GitHub Copilot's coding agent, use a link's own address and an API key. Setup for every client
- 3
Sign in and choose what needs your approval
Your client opens Corsair to sign in. Pick a link: the apps your agent can use and a mode that decides what it may do without asking. In the default Cautious mode, Eventzilla's read and write operations run right away and its 1 destructive operation waits for your approval. Strict mode asks before every write and refuses destructive operations, and Read mode allows reads only.
FAQ
Install corsair and @corsair-dev/eventzilla, add the Eventzilla plugin, and connect with an API key. Then call methods like corsair.eventzilla.api.attendees.checkin() from your app. Corsair keeps each tenant isolated.
Yes. Eventzilla requires an API key from your Eventzilla account or developer dashboard. Create credentials with access that matches what you automate, then paste them into Corsair or connect through managed auth in Hub.
Yes. One Corsair client can hit Eventzilla, GitHub, Notion, Stripe, and the rest. Trigger Eventzilla from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.
Teams use Corsair for read events, ticket types, orders and attendees, run the registration checkout, and check attendees in. Common builds include sync jobs, admin tooling, and agents that call Eventzilla APIs from your backend.
The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per Eventzilla API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.
We maintain @corsair-dev/eventzilla in the open repo. When Eventzilla ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.
No. Corsair does not read your Eventzilla data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store Eventzilla data on your behalf.
Yes. Add https://mcp.corsair.dev/mcp as a custom connector or MCP server in Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex or any client that supports remote MCP servers with OAuth sign-in, then sign in to Corsair. On ChatGPT personal plans, custom servers currently get read tools only.
Yes. Put Eventzilla on a link in Strict mode and every write waits for your approval, while destructive actions are refused. The default Cautious mode asks only before the 1 destructive Eventzilla operation. You can change a link's mode at hub.corsair.dev/me.