@carven-time/mcp 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,352 @@
1
+ export declare const toolDefs: readonly [{
2
+ readonly name: "list_templates";
3
+ readonly description: "List all event templates for the authenticated user. Templates define event types with a title and duration, and are required when creating booking links.";
4
+ readonly inputSchema: {
5
+ readonly type: "object";
6
+ readonly properties: {};
7
+ readonly required: string[];
8
+ };
9
+ }, {
10
+ readonly name: "create_template";
11
+ readonly description: "Create a new event template. Templates define a type of meeting/event with a title and duration in minutes. You need a template ID to create booking links.";
12
+ readonly inputSchema: {
13
+ readonly type: "object";
14
+ readonly properties: {
15
+ readonly title: {
16
+ readonly type: "string";
17
+ readonly description: "Template title (e.g., \"Date Night\", \"1:1 Meeting\")";
18
+ };
19
+ readonly duration_mins: {
20
+ readonly type: "number";
21
+ readonly description: "Duration in minutes (1-480)";
22
+ };
23
+ };
24
+ readonly required: readonly ["title", "duration_mins"];
25
+ };
26
+ }, {
27
+ readonly name: "update_template";
28
+ readonly description: "Update an existing event template's title or duration.";
29
+ readonly inputSchema: {
30
+ readonly type: "object";
31
+ readonly properties: {
32
+ readonly template_id: {
33
+ readonly type: "string";
34
+ readonly description: "Template ID (UUID)";
35
+ };
36
+ readonly title: {
37
+ readonly type: "string";
38
+ readonly description: "New title";
39
+ };
40
+ readonly duration_mins: {
41
+ readonly type: "number";
42
+ readonly description: "New duration in minutes (1-480)";
43
+ };
44
+ };
45
+ readonly required: readonly ["template_id"];
46
+ };
47
+ }, {
48
+ readonly name: "delete_template";
49
+ readonly description: "Delete an event template by ID.";
50
+ readonly inputSchema: {
51
+ readonly type: "object";
52
+ readonly properties: {
53
+ readonly template_id: {
54
+ readonly type: "string";
55
+ readonly description: "Template ID (UUID)";
56
+ };
57
+ };
58
+ readonly required: readonly ["template_id"];
59
+ };
60
+ }, {
61
+ readonly name: "check_availability";
62
+ readonly description: "Check available time slots for scheduling. Returns open slots respecting working hours, calendar busy times, buffer periods, and minimum notice. Use this before creating booking links.";
63
+ readonly inputSchema: {
64
+ readonly type: "object";
65
+ readonly properties: {
66
+ readonly start_date: {
67
+ readonly type: "string";
68
+ readonly description: "Start date (YYYY-MM-DD)";
69
+ };
70
+ readonly end_date: {
71
+ readonly type: "string";
72
+ readonly description: "End date (YYYY-MM-DD). Defaults to start_date. Max 14-day range.";
73
+ };
74
+ readonly template_id: {
75
+ readonly type: "string";
76
+ readonly description: "Event template ID — uses its duration if provided.";
77
+ };
78
+ readonly duration_mins: {
79
+ readonly type: "number";
80
+ readonly description: "Slot duration in minutes (default 30). Ignored if template_id is set.";
81
+ };
82
+ };
83
+ readonly required: readonly ["start_date"];
84
+ };
85
+ }, {
86
+ readonly name: "create_booking_link";
87
+ readonly description: "Create one or more magic links for specific time slots. Each link is a unique URL that a person can visit to confirm the booking. The booking creates a Google Calendar event for both parties.";
88
+ readonly inputSchema: {
89
+ readonly type: "object";
90
+ readonly properties: {
91
+ readonly template_id: {
92
+ readonly type: "string";
93
+ readonly description: "Event template ID (UUID)";
94
+ };
95
+ readonly timeslots: {
96
+ readonly type: "array";
97
+ readonly items: {
98
+ readonly type: "object";
99
+ readonly properties: {
100
+ readonly start_time: {
101
+ readonly type: "string";
102
+ readonly description: "ISO 8601 datetime";
103
+ };
104
+ readonly end_time: {
105
+ readonly type: "string";
106
+ readonly description: "ISO 8601 datetime";
107
+ };
108
+ };
109
+ readonly required: readonly ["start_time", "end_time"];
110
+ };
111
+ readonly description: "Time slots to create links for (1-50)";
112
+ };
113
+ readonly recipient_name: {
114
+ readonly type: "string";
115
+ readonly description: "Name of the person being invited";
116
+ };
117
+ readonly recipient_email: {
118
+ readonly type: "string";
119
+ readonly description: "Email of the person being invited";
120
+ };
121
+ readonly message: {
122
+ readonly type: "string";
123
+ readonly description: "Optional message to include";
124
+ };
125
+ };
126
+ readonly required: readonly ["template_id", "timeslots"];
127
+ };
128
+ }, {
129
+ readonly name: "get_booking_status";
130
+ readonly description: "Check the status of a booking by ID. Returns CONFIRMED or CANCELLED with details including guest email, time, and Google Calendar event ID.";
131
+ readonly inputSchema: {
132
+ readonly type: "object";
133
+ readonly properties: {
134
+ readonly booking_id: {
135
+ readonly type: "string";
136
+ readonly description: "Booking ID (UUID)";
137
+ };
138
+ };
139
+ readonly required: readonly ["booking_id"];
140
+ };
141
+ }, {
142
+ readonly name: "get_signup_sheet";
143
+ readonly description: "Get a published sign-up sheet with all slots and remaining capacity. Use this to see what slots are available before claiming one.";
144
+ readonly inputSchema: {
145
+ readonly type: "object";
146
+ readonly properties: {
147
+ readonly sheet_id: {
148
+ readonly type: "string";
149
+ readonly description: "Sign-up sheet ID (UUID)";
150
+ };
151
+ };
152
+ readonly required: readonly ["sheet_id"];
153
+ };
154
+ }, {
155
+ readonly name: "claim_signup_slot";
156
+ readonly description: "Claim a slot on a published sign-up sheet on behalf of a person. Enforces capacity limits and prevents duplicate claims by email.";
157
+ readonly inputSchema: {
158
+ readonly type: "object";
159
+ readonly properties: {
160
+ readonly sheet_id: {
161
+ readonly type: "string";
162
+ readonly description: "Sign-up sheet ID (UUID)";
163
+ };
164
+ readonly slot_id: {
165
+ readonly type: "string";
166
+ readonly description: "Slot ID (UUID)";
167
+ };
168
+ readonly claimant_name: {
169
+ readonly type: "string";
170
+ readonly description: "Full name of the person claiming the slot";
171
+ };
172
+ readonly claimant_email: {
173
+ readonly type: "string";
174
+ readonly description: "Email of the person claiming the slot";
175
+ };
176
+ readonly claimant_phone: {
177
+ readonly type: "string";
178
+ readonly description: "Phone number (optional)";
179
+ };
180
+ readonly custom_field_responses: {
181
+ readonly type: "object";
182
+ readonly additionalProperties: {
183
+ readonly type: "string";
184
+ };
185
+ readonly description: "Responses to custom fields, keyed by field ID";
186
+ };
187
+ };
188
+ readonly required: readonly ["sheet_id", "slot_id", "claimant_name", "claimant_email"];
189
+ };
190
+ }, {
191
+ readonly name: "get_round";
192
+ readonly description: "Get details of a group coordination round, including the availability heat map showing how many people are available in each time block. Use this to find the best meeting time for a group.";
193
+ readonly inputSchema: {
194
+ readonly type: "object";
195
+ readonly properties: {
196
+ readonly round_id: {
197
+ readonly type: "string";
198
+ readonly description: "Round ID (UUID)";
199
+ };
200
+ };
201
+ readonly required: readonly ["round_id"];
202
+ };
203
+ }, {
204
+ readonly name: "submit_availability";
205
+ readonly description: "Submit availability for a group coordination round. Each time block can be marked as PREFERRED, AVAILABLE, or UNAVAILABLE. Merges with any existing response.";
206
+ readonly inputSchema: {
207
+ readonly type: "object";
208
+ readonly properties: {
209
+ readonly round_id: {
210
+ readonly type: "string";
211
+ readonly description: "Round ID (UUID)";
212
+ };
213
+ readonly availability: {
214
+ readonly type: "object";
215
+ readonly additionalProperties: {
216
+ readonly type: "string";
217
+ readonly enum: readonly ["PREFERRED", "AVAILABLE", "UNAVAILABLE"];
218
+ };
219
+ readonly description: "Map of ISO datetime keys to availability state for each 30-min block";
220
+ };
221
+ readonly guest_name: {
222
+ readonly type: "string";
223
+ readonly description: "For guest submissions — name of the participant";
224
+ };
225
+ readonly guest_email: {
226
+ readonly type: "string";
227
+ readonly description: "For guest submissions — email of the participant";
228
+ };
229
+ readonly is_flexible: {
230
+ readonly type: "boolean";
231
+ readonly description: "If true, indicates the person is flexible on all times";
232
+ };
233
+ };
234
+ readonly required: readonly ["round_id", "availability"];
235
+ };
236
+ }, {
237
+ readonly name: "get_working_hours";
238
+ readonly description: "Get the user's configured working hours. Returns the recurring weekly schedule that defines when the user is available for bookings (e.g., Monday 09:00–17:00).";
239
+ readonly inputSchema: {
240
+ readonly type: "object";
241
+ readonly properties: {};
242
+ readonly required: string[];
243
+ };
244
+ }, {
245
+ readonly name: "set_working_hours";
246
+ readonly description: "Set the user's weekly working hours. Each entry specifies a day of week (0=Sunday, 6=Saturday) and a start/end time in HH:MM format. Upserts entries — existing days are updated, new days are created.";
247
+ readonly inputSchema: {
248
+ readonly type: "object";
249
+ readonly properties: {
250
+ readonly hours: {
251
+ readonly type: "array";
252
+ readonly items: {
253
+ readonly type: "object";
254
+ readonly properties: {
255
+ readonly day_of_week: {
256
+ readonly type: "number";
257
+ readonly description: "0=Sunday, 1=Monday, ..., 6=Saturday";
258
+ };
259
+ readonly start_time: {
260
+ readonly type: "string";
261
+ readonly description: "HH:MM format (e.g., \"09:00\")";
262
+ };
263
+ readonly end_time: {
264
+ readonly type: "string";
265
+ readonly description: "HH:MM format (e.g., \"17:00\")";
266
+ };
267
+ };
268
+ readonly required: readonly ["day_of_week", "start_time", "end_time"];
269
+ };
270
+ readonly description: "Array of working hour entries (max 7, one per day)";
271
+ };
272
+ };
273
+ readonly required: readonly ["hours"];
274
+ };
275
+ }, {
276
+ readonly name: "delete_working_hours_day";
277
+ readonly description: "Remove working hours for a specific day of the week. This makes the user unavailable on that day.";
278
+ readonly inputSchema: {
279
+ readonly type: "object";
280
+ readonly properties: {
281
+ readonly day_of_week: {
282
+ readonly type: "number";
283
+ readonly description: "0=Sunday, 1=Monday, ..., 6=Saturday";
284
+ };
285
+ };
286
+ readonly required: readonly ["day_of_week"];
287
+ };
288
+ }, {
289
+ readonly name: "get_date_overrides";
290
+ readonly description: "Get all date-specific overrides. Overrides take precedence over weekly working hours — they can block a date entirely or set custom hours for a specific date.";
291
+ readonly inputSchema: {
292
+ readonly type: "object";
293
+ readonly properties: {};
294
+ readonly required: string[];
295
+ };
296
+ }, {
297
+ readonly name: "set_date_overrides";
298
+ readonly description: "Create or update date-specific availability overrides. Use is_blocked=true to mark a date as unavailable, or is_blocked=false with start_time/end_time for custom hours on that date.";
299
+ readonly inputSchema: {
300
+ readonly type: "object";
301
+ readonly properties: {
302
+ readonly overrides: {
303
+ readonly type: "array";
304
+ readonly items: {
305
+ readonly type: "object";
306
+ readonly properties: {
307
+ readonly date: {
308
+ readonly type: "string";
309
+ readonly description: "Date in YYYY-MM-DD format";
310
+ };
311
+ readonly is_blocked: {
312
+ readonly type: "boolean";
313
+ readonly description: "true = entire day blocked, false = custom hours";
314
+ };
315
+ readonly start_time: {
316
+ readonly type: "string";
317
+ readonly description: "HH:MM (required when is_blocked=false)";
318
+ };
319
+ readonly end_time: {
320
+ readonly type: "string";
321
+ readonly description: "HH:MM (required when is_blocked=false)";
322
+ };
323
+ };
324
+ readonly required: readonly ["date", "is_blocked"];
325
+ };
326
+ readonly description: "Array of date overrides (max 90)";
327
+ };
328
+ };
329
+ readonly required: readonly ["overrides"];
330
+ };
331
+ }, {
332
+ readonly name: "delete_date_override";
333
+ readonly description: "Remove a date-specific override, reverting that date back to the regular weekly working hours.";
334
+ readonly inputSchema: {
335
+ readonly type: "object";
336
+ readonly properties: {
337
+ readonly date: {
338
+ readonly type: "string";
339
+ readonly description: "Date in YYYY-MM-DD format";
340
+ };
341
+ };
342
+ readonly required: readonly ["date"];
343
+ };
344
+ }];
345
+ type ToolResult = {
346
+ content: Array<{
347
+ type: 'text';
348
+ text: string;
349
+ }>;
350
+ };
351
+ export declare function handleTool(name: string, args: Record<string, unknown>): Promise<ToolResult>;
352
+ export {};