add_calendar_event
ChatGPTList an existing event on a calendar you manage, without making the calendar a host. Pass a Luma event with { platform: 'luma', event_id }, or an event hosted off Luma with { platform: 'external', url, name, start_at, duration_interval, timezone } plus optional geo_address_json and free-text host. It's approved immediately unless submission_mode is pending. If the Luma event already has a pending submission, automatic approval approves it and notifies its original submitter. To make a new event the calendar hosts, use create_event instead. Undo the listing with remove_calendar_events; delivered notifications cannot be recalled.
add_calendar_to_organization
ChatGPTMove a team calendar you manage into an organization you admin (see list_organizations). The calendar gets the organization's plan, and any Luma Plus subscription it had on its own is canceled. Personal calendars and calendars already in another organization can't be added. Returns the same calendar shape as get_calendar.
add_host
ChatGPTAdd a host to an event you manage, by email. manager hosts (the default) can edit the event and its guests; check-in hosts can only check guests in at the door; none hosts appear on the event page without management access. Hidden hosts (is_visible: false) get access without appearing on the event page; check-in hosts are always hidden. The person is emailed an invite, and gets a Luma account if they don't have one. Adding existing check-in staff as manager upgrades them; use update_host for other changes to an existing host. Only works on standalone events, not series. Returns the event's hosts, hidden ones included.
add_organization_admins
ChatGPTMake people admins of an organization you admin, by email. Organization admins get full manage access to every calendar in the organization, can add and remove other admins, and manage its plan. Each new admin is emailed, and anyone without a Luma account gets one; existing admins are skipped. Returns the organization's admins after the add.
add_registration_question
ChatGPTAdd a question guests answer when registering for an event you manage. It's appended after the existing questions; use reorder_registration_questions to move it. question_type picks the kind of answer: text (set multiline for a text area), select (with options; set multiple for multi-select), agree-check, phone-number, url, company (set collect_job_title to also ask for a job title), terms (a link or markdown content_md guests must accept), or a social profile: instagram, linkedin, twitter, github, telegram, youtube. Company, terms, and each social profile type can appear at most once per event, and labels must be unique. Returns the new question with its id.
add_to_membership
ChatGPTAdd someone by email to a free membership tier of a calendar you manage, approved right away. They're added to the calendar's contacts if they aren't already, and get the tier's welcome email, which uses one of the calendar's weekly sends. Only free tiers: paid tiers have to be joined by the member, or comped in the Luma app. Fails if they already have a membership; use update_membership_status to approve a pending one. Confirm with the user before adding.
apply_calendar_contact_tag
ChatGPTTag up to 500 contacts on a calendar you manage. People who aren't contacts of the calendar are skipped and counted in skipped_count; add them with import_calendar_contacts first. Contacts who already have the tag are unchanged.
apply_calendar_event_tag
ChatGPTTag up to 50 Luma events on a calendar you manage, including pending submissions. Pass event IDs (evt-) from list_calendar_events. External listings and events not on the calendar are skipped and counted in skipped_count. Events that already have the tag are unchanged.
approve_calendar_events
ChatGPTApprove up to 50 pending event submissions on a calendar you manage. Find submissions with list_calendar_events using status: 'pending', then pass their ids. Each event becomes visible on the calendar and its submitter is notified. This preserves any management access granted with the submission. Only pending submissions can be approved. Each ID succeeds or fails on its own; failures are listed under errors.
create_blast
ChatGPTEmail a message to the guests of an event you manage — now, or at scheduled_for. Goes to going (approved) guests unless you pass recipient_groups, which can target other statuses or only holders of a ticket type. Blasts go out in the background, count against the calendar's send limit, and can't be recalled once sent, so confirm the message and audience with the user first. Returns the blast, with status: 'scheduled' until it's sent.
create_calendar
ChatGPTCreate a team calendar you manage, for publishing a series of events and building an audience. Only the name is required; a default avatar and matching tint color are picked when omitted. Optionally set the city (location: { type: 'lookup', query: 'Miami Beach, FL' }), launch status, website, and social handles, in the same formats as update_calendar. Pass organization_id to create it inside an organization you admin, on the organization's plan. Add events with create_event. Returns the same calendar shape as get_calendar.
create_calendar_contact_tag
ChatGPTCreate a tag for organizing contacts on a calendar you manage. Tag names are unique per calendar. Apply it with apply_calendar_contact_tag or while importing with import_calendar_contacts. Returns the calendar's contact tags.
create_calendar_event_tag
ChatGPTCreate a tag for grouping events on a calendar you manage, such as “Workshops” or “Meetups”. Visitors can filter the calendar page by tag. Tag names are unique per calendar. Apply it with apply_calendar_event_tag. Returns the calendar's event tags.
create_coupon
ChatGPTCreate a coupon code that guests enter when registering. Pass event_id for one event, or calendar_id for a code that works on every event on the calendar; an event's own coupon with the same code takes priority. The discount is a percent, or a fixed amount in the currency's smallest unit (cents for USD). Pass ticket_type_id (event coupons only) to limit it to one ticket type; if that type is hidden, the code unlocks it, and percent_off: 0 makes an unlock code that keeps the price. Unlimited uses unless you pass remaining_count. Codes are case-insensitive and must be unique on the event or calendar. The code, discount, and ticket type can't be changed later. Returns the coupon.
create_event
ChatGPTCreate an event on a calendar you manage (see list_calendars). Events are public by default; pass visibility to change this. Queues a confirmation email to the host. For in-person venues, prefer geo_address_json: { type: 'lookup', query }; unmatched addresses are stored as text. Use search_places first for ambiguous venues. For online events, pass meeting_url, or create_meeting to have Luma create a Zoom or Google Meet link. Omit all location fields for location TBD. Require registration approval with ticket_types[].require_approval: true. Pass registration_questions to collect answers at registration; see add_registration_question for question types. Returns the get_event manage view, including the event URL.
create_ticket_type
ChatGPTAdd a ticket type to an event you manage. Returns the new ticket type.
delete_blast
ChatGPTDelete a blast on an event you manage. Deleting a scheduled blast cancels the send. Deleting a sent blast removes the post from the event page, but the emails already delivered stay delivered. Confirm with the user first.
delete_calendar_contact_tag
ChatGPTDelete a contact tag on a calendar you manage and take it off every contact that has it. The contacts themselves stay. Confirm with the user first. Returns the calendar's remaining contact tags.
delete_calendar_event_tag
ChatGPTDelete an event tag on a calendar you manage and take it off every event that has it. The events themselves stay on the calendar. Confirm with the user first. Returns the calendar's remaining event tags.
delete_registration_question
ChatGPTDelete a registration question from an event you manage. Guests' existing answers are preserved and remain visible in guest details. Confirm with the user first when the event has registrations.
delete_ticket_type
ChatGPTDelete a ticket type from an event you manage. Guests already registered with it keep their tickets, so confirm with the user first when the type has registrations. Fails if it's the event's last visible ticket type.
get_calendar
ChatGPTGet information about a calendar that you have manage access for.
get_event
ChatGPTGet information for an event, scoped to your role. Managers get full settings (view: 'manage'): the description as description_md markdown, hosts with contact info, ticket_types, registration_questions (with the IDs the question tools take), and guest_counts by status. Guests, invitees, and non-manager hosts get the guest-facing event summary (view: 'guest'), with location and meeting details once approved. Public events can be looked up by anyone (view: 'public'); private events you have no connection to return not found.
get_event_feedback_summary
ChatGPTGet the post-event ratings for an event you manage: how many guests rated it, the average, and how many gave each rating. Ratings are 1-5 stars, not a 0-10 NPS scale. This counts every rating, including ones without a written comment. Use list_event_feedback for the written comments.
get_guest
ChatGPTGet detailed information for a guest on an event you manage, including contact information, registration answers, check-in code, tickets, and order and refund amounts. id can be the guest ID (gst-), ticket key, guest key (g-), or the user's email.
get_self
ChatGPTGet the authenticated user (the Luma account whose OAuth token is in use), including their public profile: username, bio, website, and social handles.
import_calendar_contacts
ChatGPTAdd up to 500 people to the contacts of a calendar you manage, by email, so you can invite them to events and send them newsletters. Nobody is emailed. Imports run in the background and count against the calendar's import limit; people who are already contacts don't count, so re-importing them is a way to tag them in bulk. Existing Luma users keep their own name. Optionally tag everyone in the import with existing contact tags (see list_calendar_contact_tags).
invite_guests
ChatGPTEmail invites to up to 100 guests for an event you manage. Sends run in the background and count against the calendar's send limit. Existing invitees and registrants are skipped; unsubscribed people and those blocking the host are also skipped and listed under skipped. Resolve names without emails through search_people first, asking the user to disambiguate plausible matches before inviting.
list_blasts
ChatGPTList the blasts (emails to guests) on an event you manage, newest first. Each has the message as content_md markdown, its audience as recipient_groups, and for sent blasts the recipient_count and email_open_count. status is scheduled until the send finishes, then sent; quarantined means it's held for review. can_reschedule is true until a blast is sent.
list_calendar_admins
ChatGPTList the direct admins of a calendar you manage. Admins of the calendar's organization also manage it but aren't listed here; see list_organization_admins.
list_calendar_contact_tags
ChatGPTList the tags used to organize contacts on a calendar you manage. Returns tag IDs, names, and colors. Use the IDs or names to filter list_calendar_contacts.
list_calendar_contacts
ChatGPTList or search the audience of a calendar you manage, without needing an event. Returns names, emails, tags, registration and check-in counts, revenue in USD cents, and membership details. Search by name or email; filter by tag names or IDs (matching any tag), membership tier, or membership status. Use list_calendar_contact_tags to find available tags. Sort by join date (created_at, the default), name, registrations (event_approved_count), check-ins (event_checked_in_count), or revenue. Always sorted descending: newest first for join date, highest first for counts and revenue, Z–A for names. Paginated.
list_calendar_event_tags
ChatGPTList the tags used to group events on a calendar you manage. Returns tag IDs, names, and colors. list_calendar_events shows each event's tags by name.
list_calendar_events
ChatGPTList events on a calendar you manage (see list_calendars), including events you don't host. Upcoming events sort soonest-first; past events newest-first. platform: 'luma' entries are Luma events: access: 'manage' permits editing; access: 'view' means listed events managed elsewhere, with city-level locations. Pending submissions have access: 'view' until approved. Use get_event for full details. platform: 'external' entries are listings for events hosted off Luma: url links to the event elsewhere and host is free text. They have no access, and the event tools (get_event, update_event, guests) don't apply; only approve_calendar_events / reject_calendar_events apply while pending, and remove_calendar_events once approved. Paginated.
list_calendars
ChatGPTList calendars you manage — as a direct admin or through an organization you admin. Sorted by name. Returns the same calendar shape as get_calendar.
list_coupons
ChatGPTList the coupons on an event or calendar you manage, sorted by code. Pass exactly one of event_id or calendar_id. Calendar coupons work on every event on the calendar but aren't listed under an event. A remaining_count of 1000000 means unlimited, and 0 means used up or invalidated. ticket_type_id is set when the coupon only applies to that ticket type. Paginated.
list_event_feedback
ChatGPTList the written post-event feedback guests left on an event you manage: each guest's star rating (1-5) and comment, newest first. Ratings without a comment aren't listed, and you can't see who left them, so guests can rate honestly without putting their name on it. get_event_feedback_summary counts every rating. Paginated.
list_events
ChatGPTList events you're hosting or attending, with your relationship and accessible location or meeting details. Upcoming events sort soonest-first; past events newest-first. Use get_event for full details. Paginated.
list_guests
ChatGPTList guests registered or invited to an event you manage, including contact information, registration answers, check-in codes, and event_tickets. Use get_guest for a single guest's order and refund amounts in event_ticket_orders. Paginated.
list_membership_tiers
ChatGPTList the membership tiers of a calendar you manage, including hidden ones (is_hidden). Returns tier IDs, names, pricing (access_info), and registration questions. Use the IDs with add_to_membership or to filter list_calendar_contacts by tier. Paginated.
list_organization_admins
ChatGPTList the admins of an organization you admin (see list_organizations). Organization admins manage every calendar in the organization.
list_organization_calendars
ChatGPTList the calendars in an organization you admin (see list_organizations). Sorted by name. Returns the same calendar shape as get_calendar. Paginated.
list_organizations
ChatGPTList organizations you admin. Organizations group team calendars under one plan. Use an id with list_organization_calendars, list_organization_admins, or add_calendar_to_organization.
list_pending_calendar_events
ChatGPTList upcoming pending event submissions across every calendar you manage (see list_calendars), soonest first, so you can find the queues that need review without checking each calendar. Pass organization_id (see list_organizations) to only include that organization's calendars. Each entry has the same shape as list_calendar_events with status: 'pending', plus the calendar it was submitted to. Approve or reject with approve_calendar_events / reject_calendar_events using that calendar's id. Paginated.
lookup_entity
ChatGPTResolve a Luma URL (luma.com or lu.ma) or slug to an event or calendar's type, ID, and basic details. Use shared links here first, then pass the ID to other tools. Private links expose only basic metadata, not guest lists, private locations, or management access. Returns entity: null if unmatched; this is not a slug availability check.
reject_calendar_events
ChatGPTReject up to 50 pending event submissions on a calendar you manage. Find submissions with list_calendar_events using status: 'pending', then pass their ids. Submitters aren't emailed unless you pass notify_submitter: true or a plain-text message explaining the rejection, which is sent to every submitter in the call. Only pending submissions can be rejected; to take an already-approved event off the calendar, use remove_calendar_events. This does not cancel the underlying events. Each ID succeeds or fails on its own; failures are listed under errors.
remove_calendar_admins
ChatGPTRemove admins from a calendar you manage, by email (see list_calendar_admins). This removes only the direct admin role: organization admins keep managing the calendar through the organization (see list_organization_admins). On a Luma Plus calendar, the paid admin seat count shrinks to match. Every email must belong to a current admin, and at least one admin must remain. Returns the calendar's admins after the removal.
remove_calendar_events
ChatGPTRemove up to 50 approved events from a calendar you manage, the same as removing them from the calendar dashboard. Find them with list_calendar_events, then pass their ids. Removed events no longer appear on the calendar, their calendar tags are cleared, and any management access the calendar had through the listing is revoked. Submitters are not notified, and the underlying events are not cancelled or changed. Events the calendar hosts itself can't be removed; hide them with update_event (visibility) or cancel them instead. For pending submissions, use reject_calendar_events. Each ID succeeds or fails on its own; failures are listed under errors.
remove_host
ChatGPTRemove a host from an event you manage, by email (see hosts on get_event). The event creator can't be removed. Returns the event's remaining hosts.
remove_organization_admins
ChatGPTRemove admins from an organization you admin, by email (see list_organization_admins). This removes only the organization admin role: anyone who is also a direct admin of one of its calendars keeps that access (see list_calendar_admins). Every email must belong to a current admin, and at least one admin must remain. Returns the organization's admins after the removal.
reorder_registration_questions
ChatGPTChange the order guests see the registration questions in on an event you manage. Pass every question's ID from registration_questions on get_event, in the new order; a list that skips or repeats a question is rejected. Guests' existing answers stay attached. Returns the reordered questions.
search_cover_images
ChatGPTSearch Luma’s gallery of stock event cover images by keyword, e.g. “dinner party” or “hackathon”. Each result has an image_url to pass as cover_url to create_event or update_event, plus a description, tags, and dominant colors to help pick one that fits the event.
search_events
ChatGPTSearch upcoming public events on Luma by keyword. Pass location (free text, geocoded server-side) to return only events in that area — an empty result means nothing matched there, so retry without location for worldwide matches. Or pass latitude/longitude to rank events near that point first, followed by matches from elsewhere. Narrow to a time window with after/before (filtering on event start time) — only upcoming events are searchable. Returns a single ranked page of concise event summaries with any location or meeting details available to you.
search_people
ChatGPTFind people to invite to an event you manage, limited to members of calendars you admin and imported contacts, ranked by connection strength. Includes this event's approval_status and invited_at. Ask the user before inviting if multiple people plausibly match or the top match is unclear; ranking doesn't prove identity. Results without email can't be invited through invite_guests. Paginated.
search_places
ChatGPTSearch Google Maps for a venue or address and get up to 5 candidates. Use it to confirm the right place with the user before creating or updating an event, then pass the chosen place_id as geo_address_json: { type: 'google', place_id }. Skip it when the address is unambiguous — geo_address_json: { type: 'lookup', query } resolves the top result directly.
unapply_calendar_contact_tag
ChatGPTTake a tag off up to 500 contacts on a calendar you manage. The tag and the contacts stay; use delete_calendar_contact_tag to delete the tag itself. People who aren't contacts of the calendar are counted in skipped_count.
unapply_calendar_event_tag
ChatGPTTake a tag off up to 50 events on a calendar you manage. The tag and the events stay; use delete_calendar_event_tag to delete the tag itself. Events not on the calendar are counted in skipped_count.
update_blast
ChatGPTEdit a blast on an event you manage. Only the fields you pass change. Before a blast is sent, everything can change, including scheduled_for and recipient_groups. After it's sent, only subject and content_md can — that updates the post on the event page, not the emails already delivered. Blasts under review can't be edited. Returns the updated blast.
update_calendar
ChatGPTUpdate a team calendar you manage: name, URL slug, short description, avatar (an image already uploaded to the Luma CDN), tint color, launch status, city, website, or social handles (Instagram, X/Twitter, YouTube, TikTok, LinkedIn). Only provided fields change; pass null or an empty string to clear a website or handle. Handles accept a bare handle, an @handle, or a profile URL. A taken slug returns an error; to move a slug between two calendars you manage, change the old calendar's slug first. Set the city with location: { type: 'lookup', query: 'Miami Beach, FL' }, or null to clear it; the calendar's timezone and coordinate follow the city. launched means Active; coming-soon shows a placeholder page while visitors can still follow and submit events; archived stops new follows and visitor event submissions. Personal calendars can't be updated here. Returns the same calendar shape as get_calendar.
update_calendar_contact_status
ChatGPTRemove, block, or restore a contact on a calendar you manage. removed takes them off your contacts, so they stop getting your invites and newsletters, but they can follow again on their own. blocked also stops them from following the calendar or joining its events. active restores a removed or blocked contact. The contact isn't notified. Contacts with a paid membership can't be removed or blocked here, since that cancels the membership without a refund; the user has to do it in the Luma app. Confirm with the user before removing or blocking.
update_calendar_contact_tag
ChatGPTRename or recolor a contact tag on a calendar you manage (see list_calendar_contact_tags). Only the fields you pass change. Returns the calendar's contact tags.
update_calendar_event_tag
ChatGPTRename or recolor an event tag on a calendar you manage (see list_calendar_event_tags). Only the fields you pass change. Returns the calendar's event tags.
update_coupon
ChatGPTChange how many uses a coupon has left or when it's valid, on an event or calendar you manage. Only the fields you pass change; pass null for valid_start_at or valid_end_at to clear it. Coupons can't be deleted: set remaining_count to 0 to invalidate one, and raise it again to reactivate. The code, discount, and ticket type can't change, so create a new coupon for different terms. Returns the updated coupon.
update_event
ChatGPTUpdate an event you manage; omitted fields stay unchanged. Changes affect the live event page. For in-person venues, prefer geo_address_json: { type: 'lookup', query }; for online events, use meeting_url, or create_meeting for a new Zoom or Google Meet link. Changes to the name, time, or location can send push notifications; set email_guests: true only when the user also wants email notifications. Returns the get_event manage view.
update_guest_status
ChatGPTApprove, decline, waitlist, or move back to pending a guest on an event you manage. guest_id accepts the guest ID (gst-), a ticket key, a guest key (g-), or the guest's email. The guest is emailed about the change unless send_email is false. Returns the updated guest.
update_guest_tickets
ChatGPTAdd or remove tickets on a guest of an event you manage, such as moving someone to a VIP ticket or giving them an extra ticket. Added tickets are complimentary ($0) even on paid ticket types and can go over capacity. Removed tickets are invalidated without a refund, and the guest must keep at least one ticket. Ticket IDs are in event_tickets on get_guest; ticket type IDs are in ticket_types on get_event. Guests with a payment in progress can't be changed. Only works on standalone events, not series. Returns the updated guest.
update_host
ChatGPTChange a host's access level or visibility on an event you manage, by email (see hosts on get_event). manager hosts can edit the event and its guests; check-in hosts can only check guests in at the door and are never shown on the event page; none hosts appear on the event page with no access. Only the fields you pass change. The event creator's access level can't be changed. Returns the event's hosts, hidden ones included.
update_registration_question
ChatGPTUpdate a registration question on an event you manage. Only the fields you pass change, and guests' existing answers stay attached. A question's type can't change: delete it and add a new one instead. options and terms replace the current ones in full, so pass the whole list. Returns the updated question.
update_self
ChatGPTUpdate your own public Luma profile: name, bio, avatar (an image already uploaded to the Luma CDN), username, website, or social handles (Instagram, X/Twitter, YouTube, TikTok, LinkedIn). Only provided fields change; pass null or an empty string to clear the bio, website, or a handle. Handles accept a bare handle, an @handle, or a profile URL. Changing username moves your profile to https://luma.com/user/<username>; links to the old username stop working and someone else can claim it, so only change it when asked. Email can't be changed here. Returns the same user shape as get_self.
update_ticket_type
ChatGPTUpdate a ticket type on an event you manage. Only the fields you pass change. Returns the updated ticket type.
get_calendar
Claudeget_event
Claudeget_guest
Claudeget_self
Claudelist_calendars
Claudelist_events
Claudelist_guests
Claudesearch_events
Claude