> This page is for Workforce.

> 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....