Skip to content

Commit ad14cb5

Browse files
waleedlatif1claude
andcommitted
feat(luma): add Luma integration for event and guest management
Add complete Luma (lu.ma) integration with 6 tools: get event, create event, update event, list calendar events, get guests, and add guests. Includes block configuration with wandConfig for timestamps/timezones/durations, advanced mode for optional fields, and generated documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 4ccb573 commit ad14cb5

File tree

16 files changed

+1673
-0
lines changed

16 files changed

+1673
-0
lines changed

apps/docs/components/icons.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3956,6 +3956,17 @@ export function IntercomIcon(props: SVGProps<SVGSVGElement>) {
39563956
)
39573957
}
39583958

3959+
export function LumaIcon(props: SVGProps<SVGSVGElement>) {
3960+
return (
3961+
<svg {...props} fill='none' viewBox='0 0 133 134' xmlns='http://www.w3.org/2000/svg'>
3962+
<path
3963+
d='M133 67C96.282 67 66.5 36.994 66.5 0c0 36.994-29.782 67-66.5 67 36.718 0 66.5 30.006 66.5 67 0-36.994 29.782-67 66.5-67'
3964+
fill='currentColor'
3965+
/>
3966+
</svg>
3967+
)
3968+
}
3969+
39593970
export function MailchimpIcon(props: SVGProps<SVGSVGElement>) {
39603971
return (
39613972
<svg

apps/docs/components/ui/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ import {
7676
LinearIcon,
7777
LinkedInIcon,
7878
LinkupIcon,
79+
LumaIcon,
7980
MailchimpIcon,
8081
MailgunIcon,
8182
MailServerIcon,
@@ -227,6 +228,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
227228
linear: LinearIcon,
228229
linkedin: LinkedInIcon,
229230
linkup: LinkupIcon,
231+
luma: LumaIcon,
230232
mailchimp: MailchimpIcon,
231233
mailgun: MailgunIcon,
232234
mem0: Mem0Icon,
Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
---
2+
title: Luma
3+
description: Manage events and guests on Luma
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="luma"
10+
color="#FF5C35"
11+
/>
12+
13+
{/* MANUAL-CONTENT-START:intro */}
14+
[Luma](https://lu.ma/) is an event management platform that makes it easy to create, manage, and share events with your community.
15+
16+
With Luma integrated into Sim, your agents can:
17+
18+
- **Create events**: Set up new events with name, time, timezone, description, and visibility settings.
19+
- **Update events**: Modify existing event details like name, time, description, and visibility.
20+
- **Get event details**: Retrieve full details for any event by its ID.
21+
- **List calendar events**: Browse your calendar's events with date range filtering and pagination.
22+
- **Manage guest lists**: View attendees for an event, filtered by approval status.
23+
- **Add guests**: Invite new guests to events programmatically.
24+
25+
By connecting Sim with Luma, you can automate event operations within your agent workflows. Automatically create events based on triggers, sync guest lists, monitor registrations, and manage your event calendar—all handled directly by your agents via the Luma API.
26+
27+
Whether you're running community meetups, conferences, or internal team events, the Luma tool makes it easy to coordinate event management within your Sim workflows.
28+
{/* MANUAL-CONTENT-END */}
29+
30+
31+
## Usage Instructions
32+
33+
Integrate Luma into the workflow. Can create events, update events, get event details, list calendar events, get guest lists, and add guests to events.
34+
35+
36+
37+
## Tools
38+
39+
### `luma_get_event`
40+
41+
Retrieve details of a Luma event including name, time, location, hosts, and visibility settings.
42+
43+
#### Input
44+
45+
| Parameter | Type | Required | Description |
46+
| --------- | ---- | -------- | ----------- |
47+
| `apiKey` | string | Yes | Luma API key |
48+
| `eventId` | string | Yes | Event ID \(starts with evt-\) |
49+
50+
#### Output
51+
52+
| Parameter | Type | Description |
53+
| --------- | ---- | ----------- |
54+
| `event` | object | Event details |
55+
|`id` | string | Event ID |
56+
|`name` | string | Event name |
57+
|`startAt` | string | Event start time \(ISO 8601\) |
58+
|`endAt` | string | Event end time \(ISO 8601\) |
59+
|`timezone` | string | Event timezone \(IANA\) |
60+
|`durationInterval` | string | Event duration \(ISO 8601 interval, e.g. PT2H\) |
61+
|`createdAt` | string | Event creation timestamp \(ISO 8601\) |
62+
|`description` | string | Event description \(plain text\) |
63+
|`descriptionMd` | string | Event description \(Markdown\) |
64+
|`coverUrl` | string | Event cover image URL |
65+
|`url` | string | Event page URL on lu.ma |
66+
|`visibility` | string | Event visibility \(public, members-only, private\) |
67+
|`meetingUrl` | string | Virtual meeting URL |
68+
|`geoAddressJson` | json | Structured location/address data |
69+
|`geoLatitude` | string | Venue latitude coordinate |
70+
|`geoLongitude` | string | Venue longitude coordinate |
71+
|`calendarId` | string | Associated calendar ID |
72+
| `hosts` | array | Event hosts |
73+
|`name` | string | Host name |
74+
|`email` | string | Host email address |
75+
76+
### `luma_create_event`
77+
78+
Create a new event on Luma with a name, start time, timezone, and optional details like description, location, and visibility.
79+
80+
#### Input
81+
82+
| Parameter | Type | Required | Description |
83+
| --------- | ---- | -------- | ----------- |
84+
| `apiKey` | string | Yes | Luma API key |
85+
| `name` | string | Yes | Event name/title |
86+
| `startAt` | string | Yes | Event start time in ISO 8601 format \(e.g., 2025-03-15T18:00:00Z\) |
87+
| `timezone` | string | Yes | IANA timezone \(e.g., America/New_York, Europe/London\) |
88+
| `endAt` | string | No | Event end time in ISO 8601 format \(e.g., 2025-03-15T20:00:00Z\) |
89+
| `durationInterval` | string | No | Event duration as ISO 8601 interval \(e.g., PT2H for 2 hours, PT30M for 30 minutes\). Used if endAt is not provided. |
90+
| `descriptionMd` | string | No | Event description in Markdown format |
91+
| `meetingUrl` | string | No | Virtual meeting URL for online events \(e.g., Zoom, Google Meet link\) |
92+
| `visibility` | string | No | Event visibility: public, members-only, or private \(defaults to public\) |
93+
| `coverUrl` | string | No | Cover image URL \(must be a Luma CDN URL from images.lumacdn.com\) |
94+
95+
#### Output
96+
97+
| Parameter | Type | Description |
98+
| --------- | ---- | ----------- |
99+
| `event` | object | Created event details |
100+
|`id` | string | Event ID |
101+
|`name` | string | Event name |
102+
|`startAt` | string | Event start time \(ISO 8601\) |
103+
|`endAt` | string | Event end time \(ISO 8601\) |
104+
|`timezone` | string | Event timezone \(IANA\) |
105+
|`durationInterval` | string | Event duration \(ISO 8601 interval, e.g. PT2H\) |
106+
|`createdAt` | string | Event creation timestamp \(ISO 8601\) |
107+
|`description` | string | Event description \(plain text\) |
108+
|`descriptionMd` | string | Event description \(Markdown\) |
109+
|`coverUrl` | string | Event cover image URL |
110+
|`url` | string | Event page URL on lu.ma |
111+
|`visibility` | string | Event visibility \(public, members-only, private\) |
112+
|`meetingUrl` | string | Virtual meeting URL |
113+
|`geoAddressJson` | json | Structured location/address data |
114+
|`geoLatitude` | string | Venue latitude coordinate |
115+
|`geoLongitude` | string | Venue longitude coordinate |
116+
|`calendarId` | string | Associated calendar ID |
117+
| `hosts` | array | Event hosts |
118+
|`name` | string | Host name |
119+
|`email` | string | Host email address |
120+
121+
### `luma_update_event`
122+
123+
Update an existing Luma event. Only the fields you provide will be changed; all other fields remain unchanged.
124+
125+
#### Input
126+
127+
| Parameter | Type | Required | Description |
128+
| --------- | ---- | -------- | ----------- |
129+
| `apiKey` | string | Yes | Luma API key |
130+
| `eventId` | string | Yes | Event ID to update \(starts with evt-\) |
131+
| `name` | string | No | New event name/title |
132+
| `startAt` | string | No | New start time in ISO 8601 format \(e.g., 2025-03-15T18:00:00Z\) |
133+
| `timezone` | string | No | New IANA timezone \(e.g., America/New_York, Europe/London\) |
134+
| `endAt` | string | No | New end time in ISO 8601 format \(e.g., 2025-03-15T20:00:00Z\) |
135+
| `durationInterval` | string | No | New duration as ISO 8601 interval \(e.g., PT2H for 2 hours\). Used if endAt is not provided. |
136+
| `descriptionMd` | string | No | New event description in Markdown format |
137+
| `meetingUrl` | string | No | New virtual meeting URL \(e.g., Zoom, Google Meet link\) |
138+
| `visibility` | string | No | New visibility: public, members-only, or private |
139+
| `coverUrl` | string | No | New cover image URL \(must be a Luma CDN URL from images.lumacdn.com\) |
140+
141+
#### Output
142+
143+
| Parameter | Type | Description |
144+
| --------- | ---- | ----------- |
145+
| `event` | object | Updated event details |
146+
|`id` | string | Event ID |
147+
|`name` | string | Event name |
148+
|`startAt` | string | Event start time \(ISO 8601\) |
149+
|`endAt` | string | Event end time \(ISO 8601\) |
150+
|`timezone` | string | Event timezone \(IANA\) |
151+
|`durationInterval` | string | Event duration \(ISO 8601 interval, e.g. PT2H\) |
152+
|`createdAt` | string | Event creation timestamp \(ISO 8601\) |
153+
|`description` | string | Event description \(plain text\) |
154+
|`descriptionMd` | string | Event description \(Markdown\) |
155+
|`coverUrl` | string | Event cover image URL |
156+
|`url` | string | Event page URL on lu.ma |
157+
|`visibility` | string | Event visibility \(public, members-only, private\) |
158+
|`meetingUrl` | string | Virtual meeting URL |
159+
|`geoAddressJson` | json | Structured location/address data |
160+
|`geoLatitude` | string | Venue latitude coordinate |
161+
|`geoLongitude` | string | Venue longitude coordinate |
162+
|`calendarId` | string | Associated calendar ID |
163+
| `hosts` | array | Event hosts |
164+
|`name` | string | Host name |
165+
|`email` | string | Host email address |
166+
167+
### `luma_list_events`
168+
169+
List events from your Luma calendar with optional date range filtering, sorting, and pagination.
170+
171+
#### Input
172+
173+
| Parameter | Type | Required | Description |
174+
| --------- | ---- | -------- | ----------- |
175+
| `apiKey` | string | Yes | Luma API key |
176+
| `after` | string | No | Return events after this ISO 8601 datetime \(e.g., 2025-01-01T00:00:00Z\) |
177+
| `before` | string | No | Return events before this ISO 8601 datetime \(e.g., 2025-12-31T23:59:59Z\) |
178+
| `paginationLimit` | number | No | Maximum number of events to return per page |
179+
| `paginationCursor` | string | No | Pagination cursor from a previous response \(next_cursor\) to fetch the next page of results |
180+
| `sortColumn` | string | No | Column to sort by \(e.g., start_at\) |
181+
| `sortDirection` | string | No | Sort direction: asc, desc, asc nulls last, or desc nulls last |
182+
183+
#### Output
184+
185+
| Parameter | Type | Description |
186+
| --------- | ---- | ----------- |
187+
| `events` | array | List of calendar events |
188+
|`id` | string | Event ID |
189+
|`name` | string | Event name |
190+
|`startAt` | string | Event start time \(ISO 8601\) |
191+
|`endAt` | string | Event end time \(ISO 8601\) |
192+
|`timezone` | string | Event timezone \(IANA\) |
193+
|`durationInterval` | string | Event duration \(ISO 8601 interval, e.g. PT2H\) |
194+
|`createdAt` | string | Event creation timestamp \(ISO 8601\) |
195+
|`description` | string | Event description \(plain text\) |
196+
|`descriptionMd` | string | Event description \(Markdown\) |
197+
|`coverUrl` | string | Event cover image URL |
198+
|`url` | string | Event page URL on lu.ma |
199+
|`visibility` | string | Event visibility \(public, members-only, private\) |
200+
|`meetingUrl` | string | Virtual meeting URL |
201+
|`geoAddressJson` | json | Structured location/address data |
202+
|`geoLatitude` | string | Venue latitude coordinate |
203+
|`geoLongitude` | string | Venue longitude coordinate |
204+
|`calendarId` | string | Associated calendar ID |
205+
| `hasMore` | boolean | Whether more results are available for pagination |
206+
| `nextCursor` | string | Cursor to pass as paginationCursor to fetch the next page |
207+
208+
### `luma_get_guests`
209+
210+
Retrieve the guest list for a Luma event with optional filtering by approval status, sorting, and pagination.
211+
212+
#### Input
213+
214+
| Parameter | Type | Required | Description |
215+
| --------- | ---- | -------- | ----------- |
216+
| `apiKey` | string | Yes | Luma API key |
217+
| `eventId` | string | Yes | Event ID \(starts with evt-\) |
218+
| `approvalStatus` | string | No | Filter by approval status: approved, session, pending_approval, invited, declined, or waitlist |
219+
| `paginationLimit` | number | No | Maximum number of guests to return per page |
220+
| `paginationCursor` | string | No | Pagination cursor from a previous response \(next_cursor\) to fetch the next page of results |
221+
| `sortColumn` | string | No | Column to sort by: name, email, created_at, registered_at, or checked_in_at |
222+
| `sortDirection` | string | No | Sort direction: asc, desc, asc nulls last, or desc nulls last |
223+
224+
#### Output
225+
226+
| Parameter | Type | Description |
227+
| --------- | ---- | ----------- |
228+
| `guests` | array | List of event guests |
229+
|`id` | string | Guest ID |
230+
|`email` | string | Guest email address |
231+
|`name` | string | Guest full name |
232+
|`firstName` | string | Guest first name |
233+
|`lastName` | string | Guest last name |
234+
|`approvalStatus` | string | Guest approval status \(approved, session, pending_approval, invited, declined, waitlist\) |
235+
|`registeredAt` | string | Registration timestamp \(ISO 8601\) |
236+
|`invitedAt` | string | Invitation timestamp \(ISO 8601\) |
237+
|`joinedAt` | string | Join timestamp \(ISO 8601\) |
238+
|`checkedInAt` | string | Check-in timestamp \(ISO 8601\) |
239+
|`phoneNumber` | string | Guest phone number |
240+
| `hasMore` | boolean | Whether more results are available for pagination |
241+
| `nextCursor` | string | Cursor to pass as paginationCursor to fetch the next page |
242+
243+
### `luma_add_guests`
244+
245+
Add guests to a Luma event by email. Guests are added with
246+
247+
#### Input
248+
249+
| Parameter | Type | Required | Description |
250+
| --------- | ---- | -------- | ----------- |
251+
| `apiKey` | string | Yes | Luma API key |
252+
| `eventId` | string | Yes | Event ID \(starts with evt-\) |
253+
| `guests` | string | Yes | JSON array of guest objects. Each guest requires an "email" field and optionally "name", "first_name", "last_name". Example: \[\{"email": "user@example.com", "name": "John Doe"\}\] |
254+
255+
#### Output
256+
257+
| Parameter | Type | Description |
258+
| --------- | ---- | ----------- |
259+
| `guests` | array | List of added guests with their assigned status and ticket info |
260+
|`id` | string | Guest ID |
261+
|`email` | string | Guest email address |
262+
|`name` | string | Guest full name |
263+
|`firstName` | string | Guest first name |
264+
|`lastName` | string | Guest last name |
265+
|`approvalStatus` | string | Guest approval status \(approved, session, pending_approval, invited, declined, waitlist\) |
266+
|`registeredAt` | string | Registration timestamp \(ISO 8601\) |
267+
|`invitedAt` | string | Invitation timestamp \(ISO 8601\) |
268+
|`joinedAt` | string | Join timestamp \(ISO 8601\) |
269+
|`checkedInAt` | string | Check-in timestamp \(ISO 8601\) |
270+
|`phoneNumber` | string | Guest phone number |
271+
272+

apps/docs/content/docs/en/tools/meta.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
"linear",
7474
"linkedin",
7575
"linkup",
76+
"luma",
7677
"mailchimp",
7778
"mailgun",
7879
"mem0",

0 commit comments

Comments
 (0)