Calendar & Booking
Space MCP tools in the Calendar & Booking scope (calendar). Reach these with a wks_live_ key over space-mcp or space-api.
Tools in the calendar scope, callable over space-mcp (tools/call) or space-api (REST) with a wks_live_* key that grants calendar.
create_calendar_event
Scope: calendar:write
Put an event on the space's calendar. Requires title and start_at (ISO 8601). Can invite guests (they get an email with Accept/Decline), set reminders (minutes before), link a contact, repeat it, and mark it free (doesn't block booking pages). For a Wakato Meet video call with people use schedule_meeting (it invites them with the join link).
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | yes | |
start_at | string | yes | |
end_at | string | ||
is_all_day | boolean | ||
timezone | string | ||
description | string | ||
location | string | ||
category | string | A category key or label (list_calendar_categories). Default 'event'. | |
color | string | #RRGGBB — overrides the category's color. | |
recurrence_rule | string | RRULE string for recurring events, e.g. FREQ=WEEKLY;BYDAY=MO. | |
recurrence_end_at | string | ||
show_as | busy | free | busy (default) closes booking-page slots; free doesn't. | |
reminders | number[] | Minutes before the start to remind the space's people, e.g. [10, 60]. | |
contact_id | string | A contact of this space the event is with. | |
guests | object[] | People to invite: { email, name } or { contact_id }. | |
send_invitations | boolean | Email the guests an invitation (default true). | |
invitation_note | string | A line shown in the invitation email. |
delete_calendar_category
Scope: calendar:write
Remove a calendar category; its events move to move_to (default 'event'). 'event' and 'meeting' can't be removed.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | yes | |
move_to | string |
delete_calendar_event
Scope: calendar:write
Delete an event made in this space (to cancel a booking use cancel_booking). Refused for an event synced from another calendar.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | yes |
invite_event_guests
Scope: calendar:write
Invite people to an event made in this space: each gets an email with the time, place and Accept/Decline (unless send_invitations is false). Someone already invited is skipped.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | yes | |
guests | object[] | yes | |
send_invitations | boolean | ||
invitation_note | string |
list_calendar_categories
Scope: calendar:read
The space's calendar categories (key, label, color) — what events are sorted and colored by.
list_calendar_events
Scope: calendar:read
List the space calendar's events — made here, bookings, and ones synced from Google/Outlook/phones. Each says where it is from (from, calendar) and read_only when it lives on another calendar. Filters: start_date/end_date (ISO), category, calendar (a key from list_calendars), search.
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | ||
end_date | string | ||
category | string | A category key (list_calendar_categories). | |
calendar | string | Only this calendar: 'space', 'conn:<id>' or 'phone:<id>' from list_calendars. | |
search | string | ||
limit | number |
list_calendars
Scope: calendar:read
The calendars in this space: its own, Google / Outlook accounts assigned to it, and members' phone calendars — each with whether it is syncing (and what is wrong if not), and which booking pages its busy times close. Use the keys with list_calendar_events and with a booking page's checks_calendars / copy_bookings_to.
list_event_guests
Scope: calendar:read
Who is invited to an event and their answers (going / declined / maybe / no answer yet). For a synced event, the guests its own calendar lists.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | yes |
remove_event_guest
Scope: calendar:write
Take one guest off an event made in this space (by guest_id from list_event_guests, or email).
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | yes | |
guest_id | string | ||
email | string |
save_calendar_category
Scope: calendar:write
Add a calendar category (label + color), or rename / recolor one by its key.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | An existing category's key to change it; omit to add a new one. | |
label | string | ||
color | string | #RRGGBB |
sync_calendars
Scope: calendar:read
Sync the space's Google and Outlook calendars now instead of waiting for the automatic pass (every few minutes) — e.g. right after someone says they just added a meeting. At most once a minute. Answers with each calendar's state, like list_calendars. A phone's calendar syncs from the phone itself.
update_calendar_event
Scope: calendar:write
Change an event made in this space: time, title, place, category, color, repeat, busy/free, reminders, linked contact. Guests already invited are told about a new time or place. Refused for an event synced from another calendar (change it there).
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | yes | |
title | string | ||
description | string | ||
start_at | string | ||
end_at | string | ||
is_all_day | boolean | ||
timezone | string | ||
location | string | ||
category | string | A category key or label (list_calendar_categories). | |
color | string | ||
recurrence_rule | string | ||
recurrence_end_at | string | ||
show_as | busy | free | busy closes booking-page slots; free doesn't. | |
reminders | number[] | Replaces the reminders: minutes before the start. [] = none. | |
contact_id | string,null | Link a contact of this space; null unlinks. |