{"openapi":"3.1.0","info":{"title":"Luma (BYOK) API","version":"0.1.0","description":"Luma (BYOK) lets an AI assistant read your own Luma data through the Luma API with a key you supply (calendar API key (one key per calendar; the API needs a Luma Plus subscription)). Read-only: 11 tools (get_calendar, list_calendar_events, get_event, list_event_guests, list_event_ticket_types, list_event_coupons, list_event_blasts, list_calendar_contacts, list_calendar_admins, list_event_tags,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-luma.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-luma/docs"},"termsOfService":"https://connectorbay.com/byok-luma/terms"},"servers":[{"url":"https://byok-luma.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-luma/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_calendar":{"post":{"operationId":"get_calendar","summary":"Show the calendar the API key belongs to: name, slug, URL, description, location, social handles and default event setti","description":"Show the calendar the API key belongs to: name, slug, URL, description, location, social handles and default event settings. Use for \"Which Luma calendar is my API key for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_calendarArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_calendar_events":{"post":{"operationId":"list_calendar_events","summary":"List the events of the calendar with name, start and end time, time zone and URL. By default only events the calendar ma","description":"List the events of the calendar with name, start and end time, time zone and URL. By default only events the calendar manages and that are approved. Use for \"What events are coming up on my Luma calendar\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"after":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only events starting after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"After"},"before":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only events starting before this ISO 8601 time.","title":"Before"},"status":{"anyOf":[{"enum":["approved","pending"],"type":"string"},{"type":"null"}],"default":null,"description":"Calendar submission status: approved (default) or pending.","title":"Status"},"sort_direction":{"anyOf":[{"enum":["asc","desc","asc nulls last","desc nulls last"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction by start time: asc, desc, asc nulls last or desc nulls last.","title":"Sort Direction"},"pagination_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100; the server enforces its own maximum).","title":"Pagination Limit"},"pagination_cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the next_cursor value of the previous answer (leave empty for the first page).","title":"Pagination Cursor"}},"title":"list_calendar_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_event":{"post":{"operationId":"get_event","summary":"Get one event: name, start and end time, time zone, URL, visibility, location type, registration state, approval require","description":"Get one event: name, start and end time, time zone, URL, visibility, location type, registration state, approval requirement, remaining spots and hosts. Use for \"Show the details of Luma event evt-abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Luma event ID, starts with evt- (from list_calendar_events), for example 'evt-abc123'.","maxLength":60,"title":"Event Id","type":"string"}},"required":["event_id"],"title":"get_eventArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_guests":{"post":{"operationId":"list_event_guests","summary":"List the guests who registered for or were invited to an event with name, email, approval status and registration time. ","description":"List the guests who registered for or were invited to an event with name, email, approval status and registration time. Contains personal data. Use for \"Who has registered for Luma event evt-abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Luma event ID, starts with evt- (from list_calendar_events), for example 'evt-abc123'.","maxLength":60,"title":"Event Id","type":"string"},"approval_status":{"anyOf":[{"enum":["approved","session","pending_approval","invited","declined","waitlist"],"type":"string"},{"type":"null"}],"default":null,"description":"Only guests with this status: approved, session, pending_approval, invited, declined or waitlist.","title":"Approval Status"},"sort_column":{"anyOf":[{"enum":["name","email","created_at","registered_at","checked_in_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by name, email, created_at, registered_at or checked_in_at.","title":"Sort Column"},"sort_direction":{"anyOf":[{"enum":["asc","desc","asc nulls last","desc nulls last"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc, desc, asc nulls last or desc nulls last.","title":"Sort Direction"},"pagination_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100; the server enforces its own maximum).","title":"Pagination Limit"},"pagination_cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the next_cursor value of the previous answer (leave empty for the first page).","title":"Pagination Cursor"}},"required":["event_id"],"title":"list_event_guestsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_ticket_types":{"post":{"operationId":"list_event_ticket_types","summary":"List an event's ticket types with name, free or paid, price in cents, currency, capacity, validity window and hidden fla","description":"List an event's ticket types with name, free or paid, price in cents, currency, capacity, validity window and hidden flag. Use for \"What ticket types does Luma event evt-abc123 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Luma event ID, starts with evt- (from list_calendar_events), for example 'evt-abc123'.","maxLength":60,"title":"Event Id","type":"string"},"include_hidden":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":null,"description":"Pass true to include hidden ticket types.","title":"Include Hidden"}},"required":["event_id"],"title":"list_event_ticket_typesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_coupons":{"post":{"operationId":"list_event_coupons","summary":"List the coupons created for an event with code, remaining uses, validity, percent or cents off and ticket type. Use for","description":"List the coupons created for an event with code, remaining uses, validity, percent or cents off and ticket type. Use for \"Which coupon codes exist for Luma event evt-abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Luma event ID, starts with evt- (from list_calendar_events), for example 'evt-abc123'.","maxLength":60,"title":"Event Id","type":"string"},"pagination_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100; the server enforces its own maximum).","title":"Pagination Limit"},"pagination_cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the next_cursor value of the previous answer (leave empty for the first page).","title":"Pagination Cursor"}},"required":["event_id"],"title":"list_event_couponsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_blasts":{"post":{"operationId":"list_event_blasts","summary":"List the emails (blasts) sent or scheduled to an event's guests with subject, status, scheduled and sent time, recipient","description":"List the emails (blasts) sent or scheduled to an event's guests with subject, status, scheduled and sent time, recipient count and open count. Use for \"What emails did I send to guests of Luma event evt-abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Luma event ID, starts with evt- (from list_calendar_events), for example 'evt-abc123'.","maxLength":60,"title":"Event Id","type":"string"}},"required":["event_id"],"title":"list_event_blastsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_calendar_contacts":{"post":{"operationId":"list_calendar_contacts","summary":"List the calendar's contacts (audience) with name, email, tags, events attended and revenue. Search by name or email. Co","description":"List the calendar's contacts (audience) with name, email, tags, events attended and revenue. Search by name or email. Contains personal data. Use for \"Find the Luma contact named Ada\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text matched against names and emails.","title":"Query"},"membership_status":{"anyOf":[{"enum":["approved","pending","approved-pending-payment","declined"],"type":"string"},{"type":"null"}],"default":null,"description":"Only contacts with this membership status: approved, pending, approved-pending-payment or declined.","title":"Membership Status"},"sort_column":{"anyOf":[{"enum":["created_at","event_checked_in_count","event_approved_count","name","revenue_usd_cents"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by created_at, event_checked_in_count, event_approved_count, name or revenue_usd_cents.","title":"Sort Column"},"sort_direction":{"anyOf":[{"enum":["asc","desc","asc nulls last","desc nulls last"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc, desc, asc nulls last or desc nulls last.","title":"Sort Direction"},"pagination_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100; the server enforces its own maximum).","title":"Pagination Limit"},"pagination_cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the next_cursor value of the previous answer (leave empty for the first page).","title":"Pagination Cursor"}},"title":"list_calendar_contactsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_calendar_admins":{"post":{"operationId":"list_calendar_admins","summary":"List the admins of the calendar with name and email. Use for \"Who are the admins of my Luma calendar\".","description":"List the admins of the calendar with name and email. Use for \"Who are the admins of my Luma calendar\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_calendar_adminsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_tags":{"post":{"operationId":"list_event_tags","summary":"List the tags available for events on the calendar with name and color. Use for \"Which event tags does my Luma calendar ","description":"List the tags available for events on the calendar with name and color. Use for \"Which event tags does my Luma calendar have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_event_tagsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_membership_tiers":{"post":{"operationId":"list_membership_tiers","summary":"List the calendar's membership tiers, including hidden ones, with name, description, hidden flag and approval requiremen","description":"List the calendar's membership tiers, including hidden ones, with name, description, hidden flag and approval requirement. Use for \"What membership tiers does my Luma calendar offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pagination_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100; the server enforces its own maximum).","title":"Pagination Limit"},"pagination_cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the next_cursor value of the previous answer (leave empty for the first page).","title":"Pagination Cursor"}},"title":"list_membership_tiersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}