luma_apply_ contact_ tagTag existing contacts.
Create an event, see who is going, approve the waitlist, invite your contacts, make a discount code or email your guests, all by asking.
PopMCPLuma
Sign in and your AI gets the tools Luma offers signed-in accounts, on any Luma account. An API key from a calendar on Luma Plus gives it every endpoint of Luma's API instead, which is the list on this page, including webhooks, cancelling events and organization tools. A few tools do a whole job at once: finding an event by name, one event at a glance, and everyone on a guest list.
78 tools in the full catalog: 29 read and 49 write. 38 load by default, and the rest are found with tool search.
luma_apply_ contact_ tagTag existing contacts.
luma_apply_ event_ tagTag events on the calendar.
luma_list_ contact_ tagsList the calendar's contact tags, with their ids.
luma_list_ event_ tagsList the calendar's event tags, with their ids.
luma_approve_ calendar_ eventApprove an event waiting on this calendar, from luma_list_events with status=pending.
luma_get_ calendarGet the connected calendar's name, url, status, location, social links and event defaults.
luma_list_ eventsList the events on the connected Luma calendar, soonest or latest first.
luma_add_ guestsRegister people on an event straight away, as going unless approval_status says otherwise.
luma_cancel_ eventStep 2 of cancelling an event.
luma_create_ eventCreate an event on the connected calendar.
luma_event_ overviewOne event with its ticket types, coupons and guest counts by status.
luma_export_ guestsEveryone on an event, across pages, with counts by status.
luma_find_ eventsFind events on the calendar by part of their name.
luma_get_ eventGet one event in full: time, location, description, capacity, registration questions, hosts.
luma_get_ guestGet one guest with their answers, tickets and orders.
luma_list_ guestsList an event's guests with name, email, status and tickets, one page at a time.
luma_request_ event_ cancellationStep 1 of cancelling an event.
luma_send_ invitesEmail an invitation to an event, and an SMS when their phone is linked.
luma_update_ eventChange an event.
luma_update_ guest_ statusApprove, decline, waitlist or set a guest back to pending.
luma_update_ guest_ ticketsGive a guest complimentary tickets or invalidate some they hold, with no charge.
luma_create_ event_ couponCreate a discount code for one event.
luma_list_ event_ couponsList all coupons that have been created for an event.
luma_lookup_ entityTurn a Luma URL or slug into an event or calendar.
luma_search_ cover_ imagesSearch Luma's stock cover images by keyword.
luma_search_ placesSearch Google Maps for a place, up to 5 candidates.
luma_upload_ imagePut a picture on Luma's image host, ready to use as an event cover.
luma_create_ blastEmail a message to an event's guests, now or at scheduled_for.
luma_create_ ticket_ typeAdd a ticket type to an event.
luma_create_ webhookHave Luma call a URL when something happens on this calendar.
luma_import_ contactsAdd people to the calendar's contacts.
luma_list_ blastsList the blasts (emails to guests) on an event, newest first.
luma_list_ contactsList or search the calendar's contacts.
luma_list_ ticket_ typesList all ticket types for an event
luma_list_ webhooksList this calendar's webhooks.
luma_update_ ticket_ typeUpdate an existing ticket type configuration
luma_add_ hostAdd a host or check-in staff member to an event by email.
luma_list_ membership_ tiersList the calendar's membership tiers, including hidden ones.
luma_create_ contact_ tagCreate a contact tag.
luma_create_ event_ tagCreate an event tag.
luma_delete_ contact_ tagDelete a contact tag.
luma_delete_ event_ tagDelete an event tag.
luma_unapply_ contact_ tagTake a tag off contacts.
luma_unapply_ event_ tagUnapply a tag from events on the calendar.
luma_update_ contact_ tagRename or recolor a contact tag.
luma_update_ event_ tagRename or recolor an event tag.
luma_add_ calendar_ adminsGive people admin access to the calendar by email, at most 20 at a time.
luma_add_ calendar_ eventPut an existing event on this calendar.
luma_list_ calendar_ adminsList all admins for the calendar.
luma_lookup_ calendar_ eventSee if an event already exists on the calendar.
luma_reject_ calendar_ eventReject an event waiting on this calendar.
luma_update_ calendarChange the connected calendar's settings.
luma_create_ calendar_ couponCreate a discount code usable on every event this calendar manages.
luma_create_ image_ upload_ urlGet an one-time upload URL for an image (image/jpeg or image/png).
luma_get_ selfSay who owns this connection: their user id, name and email.
luma_list_ calendar_ couponsList all coupons that have been created for a calendar.
luma_update_ calendar_ couponChange a calendar coupon's remaining uses or valid dates.
luma_update_ event_ couponChange an event coupon's remaining uses or valid dates.
luma_block_ contactBlock a contact so they can't follow your calendar or join its events.
luma_create_ organization_ calendarCreate a calendar in the organization.
luma_delete_ blastDelete a blast.
luma_delete_ ticket_ typeSoft delete a ticket type.
luma_delete_ webhookDelete a webhook endpoint.
luma_get_ blastGet a blast by ID.
luma_get_ ticket_ typeGet a single ticket type by ID
luma_get_ webhookGet one webhook by id, from luma_list_webhooks.
luma_list_ organization_ adminsList the organization's admins.
luma_list_ organization_ calendarsList every calendar in the organization.
luma_list_ organization_ eventsList events across every calendar in the organization, without duplicates.
luma_remove_ contactRemove a contact from your calendar.
luma_restore_ contactRestore a blocked or removed contact, returning them to your active contacts.
luma_transfer_ event_ calendarMove an event to another calendar in the same organization.
luma_update_ blastEdit a blast.
luma_update_ webhookUpdate a webhook endpoint's event types or status (active/paused).
luma_add_ member_ to_ tierAdd an user to a membership tier.
luma_remove_ hostRemove a host from an event.
luma_update_ hostUpdate a host's permissions or visibility on an event.
luma_update_ member_ statusUpdate a member's membership status.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Luma side.
Open Luma in PopMCP, click Authorize with Luma, sign in to Luma and approve. There is no developer app and no callback URL to set up, and any Luma account works. For webhooks, cancelling events and organization tools, add an API key from a calendar on Luma Plus under More options instead of signing in.
your-luma-value••••••••••••3f7aReading changes nothing in Luma. Creating events, changing guests, sending invites and emailing guests wait until an owner or admin allows write actions in PopMCP, and new connections start read-only. A sign-in sees what that person can see in Luma, and an API key reaches its own calendar.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Luma credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Who is going to my next event, and who is still waiting for approval?
luma_list_eventsok
Then just ask for the work
“Who is going to my next event, and who is still waiting for approval?”
“Create a founders dinner on December 4 at 6pm New York time at Soho House, with 40 spots and approval required”
“Invite everyone tagged VIP to the founders dinner, and show me the list before anything goes out”
“Make a 20% discount code for this event that the first 50 people can use”
“Email everyone going to tomorrow's event with the parking details, once I have read the message”
“How did this event do? Tickets, guest counts and how many people actually checked in”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Luma behind an AI client.
Not to sign in. Luma says any Luma account can connect this way. Luma's API keys do need Luma Plus on the calendar, and a few features, such as custom event URLs, depend on the calendar's plan whichever way you connect.
Sign in unless you need something only the API offers: webhooks, cancelling events, or organization tools. Signing in acts as you, across what you manage in Luma. An API key reaches one calendar, or a whole organization with an organization key.
Luma shows that notice on its approval page for apps it has not reviewed. Check that the address on the page is PopMCP's, then approve.
Only if write actions are allowed in PopMCP, and new connections start read-only. Invites and blasts reach real people, count against your calendar's send limits, and a sent blast cannot be recalled, so the tools tell the AI to show you the list and the message first.
With an API key, yes, in two steps. The first shows how many guests are going and whether they paid and changes nothing; the second cancels the event, tells every guest and can refund them. It cannot be undone, so the AI is told to ask you between the two.
It sees names, emails and registration answers for events you manage, because that is the job, and whatever it reads is saved in your AI chat. On an API key connection, check-in codes are never passed to it, and phone numbers stay out of guest lists unless it looks up one person.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Luma in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Luma on the consent screen. The Luma tools are then available in that session, and no Luma credential is stored on your machine.
Loading 78 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 38-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 78 here. A trigger is something PopMCP watches for you: 11 Luma events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Luma.
Launch a hosted MCP endpoint for Luma, keep tool access under control, and start testing real workflow prompts right away.