> This page is for Agent Handler.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.merge.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.merge.dev/_mcp/server.

# Luma

**Authentication:** API key. See [Magic Link](/merge-agent-handler/features/magic-link) for the runtime auth flow.

## Sample use cases

* Create an event for our June meetup and open registration.
* List all guests who registered for the launch party.
* Send invites to everyone tagged as a VIP contact.
* Add a discount coupon for early-bird ticket buyers.

## Available Tools

#### get\_calendar

Get the calendar this API key is scoped to: name, slug, public URL, description, images, and social handles. Luma API...

#### update\_calendar

Update the calendar's name, slug, description, avatar, or tint colour. Only the fields you pass are changed. Use get\_...

#### list\_calendar\_admins

List the administrators of this calendar with their names and email addresses. Takes no arguments — the API key deter...

#### list\_calendar\_events

List events on this calendar with cursor pagination. Filter server-side by date range (before/after, ISO 8601), platf...

#### lookup\_calendar\_event

Report whether an event is on this calendar. platform is required and selects the identifier: 'luma' takes event\_id o...

#### add\_calendar\_event

Add an event to this calendar: an existing Luma event by event\_id (platform='luma'), or an event hosted elsewhere by...

#### approve\_calendar\_event

Approve an event submitted to this calendar, making it publicly visible on the calendar page. Use list\_calendar\_event...

#### reject\_calendar\_event

Reject an event submitted to this calendar, optionally with a message to the submitter. Use list\_calendar\_events with...

#### list\_contacts

List contacts on this calendar with cursor pagination. Filter server-side by free-text query, tag names (use list\_con...

#### import\_contacts

Import contacts onto this calendar in bulk. Each contact is an object with email and optional name. Optionally apply...

#### block\_contact

Block a contact from registering for events on this calendar. Identify them by contact\_id or email — use list\_contact...

#### remove\_contact

Remove a contact from this calendar. Identify them by contact\_id or email — use list\_contacts to find contact IDs. Us...

#### restore\_contact

Restore a contact previously removed or blocked on this calendar, letting them register for events again. Identify th...

#### list\_event\_coupons

List discount coupons scoped to one event, with cursor pagination. Use list\_calendar\_events to find event IDs. Return...

#### create\_event\_coupon

Create a discount coupon on one event. discount requires a discount\_type discriminator: or . Optionally cap redemptio...

#### update\_event\_coupon

Update an event coupon's remaining redemption count or validity window. Identify it by event ID plus coupon code — us...

#### list\_calendar\_coupons

List discount coupons that apply across every event on this calendar, with cursor pagination. Returns coupon codes fo...

#### create\_calendar\_coupon

Create a discount coupon valid across every event on this calendar. discount requires a discount\_type discriminator:...

#### update\_calendar\_coupon

Update a calendar-wide coupon's remaining redemption count or validity window. Identify it by coupon code — use list\_...

#### get\_event

Get one Luma event by ID: schedule, location, capacity, visibility, hosts, and guest counts. Use list\_calendar\_events...

#### create\_event

Create an event on the calendar this API key belongs to. Requires name, start\_at (ISO 8601), and an IANA timezone. Op...

#### update\_event

Update an existing event. Only the fields you pass are changed. Set suppress\_notifications=true to avoid emailing gue...

#### request\_event\_cancellation

Step 1 of cancelling an event. Returns a single-use cancellation\_token plus the guest count and whether the event has...

#### cancel\_event

Step 2 of cancelling an event: permanently cancels it and notifies guests. Requires the cancellation\_token from reque...

#### list\_guests

List guests on an event with cursor pagination. Filter server-side by approval\_status (approved, pending\_approval, in...

#### get\_guest

Get one guest on an event: approval status, registration answers, tickets held, check-in QR code, and ticket purchase...

#### add\_guests

Register one or more guests on an event directly, bypassing signup. Each guest is an object with email and optional n...

#### update\_guest\_status

Change a guest's approval status on an event: approve them, decline them, send them back to pending\_approval, or move...

#### update\_guest\_tickets

Add or remove tickets held by a guest on an event. Use list\_ticket\_types for ticket type IDs to add, and get\_guest to...

#### send\_guest\_invites

Email event invitations to a list of people. Each guest is an object with email and optional name; an optional messag...

#### add\_host

Add a host to an event by email. access\_level 'manager' can edit the event, 'check-in' can only check guests in, 'non...

#### update\_host

Change an existing host's access level or public visibility on an event. Identify the host by email. Use get\_event to...

#### remove\_host

Remove a host from an event by email. The person keeps their Luma account and any guest registration; only their host...

#### list\_membership\_tiers

List the membership tiers on this calendar, with pricing, access rules, and the questions asked at signup. Returns ti...

#### add\_member\_to\_tier

Add someone to a membership tier by email. Use list\_membership\_tiers to find tier IDs. Set skip\_payment=true to comp...

#### update\_member\_status

Approve or decline a calendar membership, identified by Luma user ID. Declining removes the membership outright rathe...

#### get\_current\_user

Get the Luma user this API key belongs to: user ID, name, and email. Takes no arguments. Use this to confirm which ac...

#### lookup\_entity

Resolve a public Luma slug to the calendar, event, or user it belongs to. Pass just the slug from the URL, e.g. 'merg...

#### create\_image\_upload\_url

Get a pre-signed URL for uploading a JPEG or PNG to Luma's image host. PUT the raw image bytes to upload\_url, then pa...

#### list\_contact\_tags

List the contact tags defined on this calendar, with their IDs, names, and colours. Takes no arguments. Returns tag I...

#### create\_contact\_tag

Create a contact tag on this calendar for labelling people. Colour is one of cranberry, barney, red, green, blue, pur...

#### update\_contact\_tag

Rename a contact tag or change its colour. Use list\_contact\_tags to find tag IDs. Renaming a tag updates it everywher...

#### delete\_contact\_tag

Delete a contact tag from this calendar. The tag is removed from every contact carrying it; the contacts themselves a...

#### apply\_contact\_tag

Apply a contact tag to contacts, identified by user\_ids or emails. Use list\_contact\_tags for tag names and list\_conta...

#### unapply\_contact\_tag

Remove a contact tag from contacts, identified by user\_ids or emails. The tag itself still exists — use delete\_contac...

#### list\_event\_tags

List the event tags defined on this calendar, with their IDs, names, and colours. Takes no arguments. Returns tag IDs...

#### create\_event\_tag

Create an event tag on this calendar for grouping events. Colour is one of cranberry, barney, red, green, blue, purpl...

#### update\_event\_tag

Rename an event tag or change its colour. Use list\_event\_tags to find tag IDs. Renaming a tag updates it everywhere i...

#### delete\_event\_tag

Delete an event tag from this calendar. The tag is removed from every event carrying it; the events themselves are un...

#### apply\_event\_tag

Apply an event tag to one or more events. Use list\_event\_tags for tag names and list\_calendar\_events for event IDs. R...

#### unapply\_event\_tag

Remove an event tag from one or more events. The tag itself still exists — use delete\_event\_tag to remove it entirely...

#### list\_ticket\_types

List the ticket types on an event, including price, capacity, and sale window. Set include\_hidden=true to also return...

#### get\_ticket\_type

Get one ticket type by ID: name, free or paid, price, currency, capacity, approval requirement, and sale window. Use...

#### create\_ticket\_type

Add a ticket type to an event. Requires event\_id, name, and type ('free' or 'paid'); paid types also need cents and c...

#### update\_ticket\_type

Update a ticket type: price, name, capacity, sale window, visibility, or approval requirement. Only the fields you pa...

#### delete\_ticket\_type

Delete a ticket type from an event. Use list\_ticket\_types to find ticket type IDs. Consider update\_ticket\_type with i...

#### list\_webhooks

List the webhook subscriptions on this calendar with cursor pagination. Returns webhook IDs for get\_webhook, update\_w\...

#### get\_webhook

Get one webhook subscription: destination URL, subscribed event types, active or paused status, and the signing secre...

#### create\_webhook

Create a webhook subscription that POSTs to your URL when calendar activity happens. Event types include event.create...

#### update\_webhook

Update a webhook subscription: replace its event types, or pause and resume delivery via status. event\_types replaces...

#### delete\_webhook

Delete a webhook subscription permanently, stopping all callbacks to its URL. Use list\_webhooks to find webhook IDs....