Cal MCP connector
OAuth 2.1/DCR CalendarProductivityAIConnect to Cal MCP. Manage bookings, event types, schedules, and availability from your AI workflows.
Cal MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'calmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Cal MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'calmcp_get_bookings',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "calmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Cal MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="calmcp_get_bookings",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Update schedule, org membership, me — Update an existing schedule
- Booking reschedule, confirm, cancel — Reschedule a booking to a new time
- Absent mark booking — Mark host or attendees as absent for a past booking
- Get schedules, schedule, org routing forms — List all schedules for the authenticated user
- Delete schedule, org membership, event type — Delete a schedule by its numeric ID
- Create schedule, org membership, event type — Create a new schedule
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
calmcp_add_booking_attendee
#
Add a new attendee to an existing booking. Required: name, email, timeZone. ASK THE USER for all attendee details — never guess or fabricate names, emails, or time zones. 6 params
Add a new attendee to an existing booking. Required: name, email, timeZone. ASK THE USER for all attendee details — never guess or fabricate names, emails, or time zones.
bookingUid string required Booking UID email string required Attendee email address. Ask the user — never guess or fabricate. name string required Attendee name. Ask the user — never guess. timeZone string required IANA time zone. Ask the user — never guess. language string optional ISO 639-1 language code (e.g. 'en') phoneNumber string optional Phone in international format. Ask the user — never guess. calmcp_calculate_routing_form_slots
#
Submit a routing form response and get available slots. The response object contains the user's answers (keys are routing form field slugs/IDs). Use get_org_routing_forms to find routingFormId. Start/end must be in UTC ISO 8601. 8 params
Submit a routing form response and get available slots. The response object contains the user's answers (keys are routing form field slugs/IDs). Use get_org_routing_forms to find routingFormId. Start/end must be in UTC ISO 8601.
end string required Range end in UTC, ISO 8601 (e.g. '2024-08-14' or '2024-08-14T18:00:00Z') response object required Routing form response object. Keys are routing form field IDs, values are the user's answers. Use get_org_routing_forms to discover the form's fields and their IDs. Ask the user for the answer values — never fabricate. routingFormId string required Routing form ID. Use get_org_routing_forms to find this — never guess. start string required Range start in UTC, ISO 8601 (e.g. '2024-08-13' or '2024-08-13T09:00:00Z') bookingUidToReschedule string optional Booking UID being rescheduled — ensures original time appears in available slots duration number optional Desired slot duration in minutes (for variable-duration events) format string optional Slot format: 'range' returns start+end, 'time' returns start only timeZone string optional IANA time zone for returned slots (default UTC) calmcp_cancel_booking
#
Cancel a booking by UID. For recurring non-seated bookings, set cancelSubsequentBookings=true to cancel future recurrences. For seated bookings, pass seatUid to cancel a specific seat instead of the entire booking. Confirm with the user before cancelling. 4 params
Cancel a booking by UID. For recurring non-seated bookings, set cancelSubsequentBookings=true to cancel future recurrences. For seated bookings, pass seatUid to cancel a specific seat instead of the entire booking. Confirm with the user before cancelling.
bookingUid string required Booking UID cancellationReason string optional Reason for cancellation cancelSubsequentBookings boolean optional For recurring non-seated bookings only: if true, also cancels all subsequent recurrences after this one. seatUid string optional UID of the specific seat to cancel within a seated booking. Required when cancelling an individual seat instead of the entire booking. calmcp_confirm_booking
#
Confirm a pending booking that requires manual confirmation. Only the host can confirm. 1 param
Confirm a pending booking that requires manual confirmation. Only the host can confirm.
bookingUid string required Booking UID calmcp_create_booking
#
Create a booking. WORKFLOW: (1) Use get_event_types to find the event type ID/slug. (2) Call get_availability to find open slots — NEVER pick a time without checking availability first. (3) If using bookingFieldsResponses, call get_event_type first to discover required custom fields. (4) For attendee details (name, email, timeZone), use get_me if booking for yourself, otherwise ASK THE USER — never guess or fabricate attendee info. Identify the event type by: eventTypeId, OR eventTypeSlug + username (individual), OR eventTypeSlug + teamSlug (team). The 'start' time MUST be in UTC ISO 8601. 'username' is the HOST whose calendar you are booking. 'attendee' is the GUEST (the caller). 14 params
Create a booking. WORKFLOW: (1) Use get_event_types to find the event type ID/slug. (2) Call get_availability to find open slots — NEVER pick a time without checking availability first. (3) If using bookingFieldsResponses, call get_event_type first to discover required custom fields. (4) For attendee details (name, email, timeZone), use get_me if booking for yourself, otherwise ASK THE USER — never guess or fabricate attendee info. Identify the event type by: eventTypeId, OR eventTypeSlug + username (individual), OR eventTypeSlug + teamSlug (team). The 'start' time MUST be in UTC ISO 8601. 'username' is the HOST whose calendar you are booking. 'attendee' is the GUEST (the caller).
attendee object required Attendee details — the person making the booking (the guest/caller), NOT the host. To book another user's calendar, set their username in the 'username' field and put YOUR (the caller's) details here. NEVER guess or fabricate email addresses — ask the user if unknown. start string required Start time in UTC, ISO 8601 (e.g. 2024-08-13T09:00:00Z). Must be UTC. allowBookingOutOfBounds boolean optional If true and the authenticated user is a host, allow booking outside the configured scheduling window (e.g. before minimumBookingNotice or beyond the booking window). Ignored for non-hosts. allowConflicts boolean optional If true and the authenticated user is a host, skip availability conflict checks. Ignored for non-hosts. bookingFieldsResponses object optional Custom booking field responses as {slug: value} pairs eventTypeId integer optional Event type ID. Required unless eventTypeSlug + username (or teamSlug) are provided. eventTypeSlug string optional Event type slug (e.g. '15min'). Must be combined with username (for individual) or teamSlug (for team). guests array optional Additional guest emails to include. Ask the user for guest emails — never guess or fabricate. lengthInMinutes integer optional Desired booking length for variable-duration event types. Uses event type default if omitted. location object optional Meeting location override as an object. Must match one of the event type's configured location types: {type:'integration',integration:'cal-video'|'google-meet'|'zoom'|...}, {type:'attendeePhone',phone:'+...'}, {type:'attendeeAddress',address:'...'}, {type:'attendeeDefined',location:'...'}, {type:'address'}, {type:'link'}, {type:'phone'}, or {type:'organizersDefaultApp'} (team events only). metadata object optional Metadata key-value pairs (max 50 keys, keys ≤40 chars, string values ≤500 chars) organizationSlug string optional Organization slug, needed when the user/team is within an organization. teamSlug string optional Team slug. Required with eventTypeSlug for team event types. username string optional Username of the host whose calendar you are booking on. Required with eventTypeSlug for individual event types. calmcp_create_event_type
#
Create a new event type. Required: title, slug, lengthInMinutes. Supports locations, booking fields, buffers, recurrence, confirmation policy, seats, and more. 27 params
Create a new event type. Required: title, slug, lengthInMinutes. Supports locations, booking fields, buffers, recurrence, confirmation policy, seats, and more.
lengthInMinutes integer required Duration in minutes slug string required URL-friendly slug (e.g. '30min') title string required Event type title afterEventBuffer integer optional Minutes blocked on calendar after the meeting ends. beforeEventBuffer integer optional Minutes blocked on calendar before the meeting starts. bookingFields array optional Custom fields added to the booking form. Each object defines a field with properties like name, type, label, required, etc. bookingLimitsCount object optional Limit how many times this event can be booked per period (e.g. {day: 2, week: 5}). bookingWindow object optional Limit how far in the future this event can be booked. confirmationPolicy object optional Manual confirmation policy. Controls whether bookings require host confirmation. customName string optional Custom event name template with variables: {Event type title}, {Organiser}, {Scheduler}, {Location}. description string optional Description shown on the booking page destinationCalendar object optional Which external calendar new bookings are added to. disableGuests boolean optional If true, bookers cannot add guest emails. hidden boolean optional Whether the event type is hidden from the public profile. hideCalendarNotes boolean optional Hide calendar notes from the booking. lengthInMinutesOptions array optional Multiple duration options the attendee can choose from (e.g. [15, 30, 60]). If provided, the booker picks their preferred duration. locations array optional Locations where the event takes place. If not provided, Cal Video is used. Each element is a location object (e.g. {type: 'inPerson', address: '...'}). Note: setting a conferencing app as location requires the app to already be installed. lockTimeZoneToggleOnBookingPage boolean optional Lock the timezone on the booking page. minimumBookingNotice integer optional Minimum minutes before the event that a booking can be made. offsetStart integer optional Offset timeslots shown to bookers by a specified number of minutes. onlyShowFirstAvailableSlot boolean optional Limit availability to one slot per day (the earliest available). recurrence object optional Recurrence settings to create a recurring event type (e.g. {frequency: 'weekly', interval: 1, occurrences: 12}). requiresBookerEmailVerification boolean optional Whether booker must verify their email before the booking is confirmed. scheduleId integer optional Use a specific schedule instead of the user's default. Use get_schedules to find schedule IDs. seats object optional Enable seated events. Object with seatsPerTimeSlot and other seat settings. slotInterval integer optional Length of each slot in minutes. Defaults to the event duration. successRedirectUrl string optional URL to redirect the booker to after a successful booking. calmcp_create_org_membership
#
Add a user to an organization. Required: userId (must be a real user ID from the system) and role (MEMBER, ADMIN, or OWNER). Platform managed users should only have MEMBER role. 5 params
Add a user to an organization. Required: userId (must be a real user ID from the system) and role (MEMBER, ADMIN, or OWNER). Platform managed users should only have MEMBER role.
orgId integer required Organization ID. Use get_me to obtain your organizationId — never guess. role string required Role (managed users: MEMBER only) userId number required User ID of the person to add. Must be a real user ID — ask the user for this, never guess. accepted boolean optional Whether accepted disableImpersonation boolean optional Disable impersonation calmcp_create_schedule
#
Create a new schedule. Required: name, timeZone, isDefault. Each user should have exactly one default schedule. Supports availability slots and date-specific overrides. 5 params
Create a new schedule. Required: name, timeZone, isDefault. Each user should have exactly one default schedule. Supports availability slots and date-specific overrides.
isDefault boolean required Whether this is the user's default schedule. Each user should have exactly one default schedule. name string required Schedule name timeZone string required IANA time zone used to calculate available times (e.g. America/New_York) availability array optional Availability slots. If not provided, defaults to Mon-Fri 09:00-17:00. overrides array optional Date-specific overrides. Use to change availability for a specific date or mark it as unavailable. calmcp_delete_event_type
#
Permanently delete an event type by ID. This action is irreversible — confirm with the user before proceeding. 1 param
Permanently delete an event type by ID. This action is irreversible — confirm with the user before proceeding.
eventTypeId integer required Event type ID to delete. Use get_event_types to find this. calmcp_delete_org_membership
#
Remove a membership from an organization. This action is irreversible — confirm with the user before proceeding. 2 params
Remove a membership from an organization. This action is irreversible — confirm with the user before proceeding.
membershipId integer required Membership ID. Use get_org_memberships to find this. orgId integer required Organization ID. Use get_me to obtain your organizationId — never guess. calmcp_delete_schedule
#
Delete a schedule by its numeric ID. This action is irreversible — confirm with the user before proceeding. 1 param
Delete a schedule by its numeric ID. This action is irreversible — confirm with the user before proceeding.
scheduleId integer required Schedule ID calmcp_get_availability
#
Get available time slots for a host. You MUST provide at least one identifier: (1) eventTypeId, (2) eventTypeSlug + username, (3) eventTypeSlug + teamSlug, or (4) usernames (comma-separated, min 2, for dynamic events). 'username' is the host whose availability you are checking. Start/end must be in UTC ISO 8601. 12 params
Get available time slots for a host. You MUST provide at least one identifier: (1) eventTypeId, (2) eventTypeSlug + username, (3) eventTypeSlug + teamSlug, or (4) usernames (comma-separated, min 2, for dynamic events). 'username' is the host whose availability you are checking. Start/end must be in UTC ISO 8601.
end string required Range end in UTC, ISO 8601 (e.g. '2024-08-14' or '2024-08-14T18:00:00Z') start string required Range start in UTC, ISO 8601 (e.g. '2024-08-13' or '2024-08-13T09:00:00Z') bookingUidToReschedule string optional Booking UID being rescheduled — ensures original time appears in available slots duration integer optional Desired slot duration in minutes (for variable-duration or dynamic events, defaults to 30) eventTypeId integer optional Event type ID. Use this OR (eventTypeSlug + username) OR (eventTypeSlug + teamSlug). eventTypeSlug string optional Event type slug. Must be combined with username (individual) or teamSlug (team). format string optional Response format: 'range' (start+end) or 'time' (start only) organizationSlug string optional Organization slug, needed when the user/team is within an organization. teamSlug string optional Team slug. Required with eventTypeSlug for team event types. timeZone string optional IANA time zone for returned slots (e.g. America/New_York). Defaults to UTC. username string optional Username of the host whose availability you are checking. Required with eventTypeSlug for individual event types. usernames string optional Comma-separated or array of usernames for dynamic events (min 2). organizationSlug is needed only if users belong to an org. calmcp_get_booking
#
Get a specific booking by its UID (use get_bookings to find UIDs). Returns full details including attendees, location, and metadata. 1 param
Get a specific booking by its UID (use get_bookings to find UIDs). Returns full details including attendees, location, and metadata.
bookingUid string required Booking UID calmcp_get_booking_attendee
#
Get a specific attendee by their numeric ID within a booking. Use get_booking_attendees to find attendee IDs. 2 params
Get a specific attendee by their numeric ID within a booking. Use get_booking_attendees to find attendee IDs.
attendeeId integer required Attendee ID. Use get_booking_attendees to find this. bookingUid string required Booking UID calmcp_get_booking_attendees
#
Get all attendees for a booking by its UID. 1 param
Get all attendees for a booking by its UID.
bookingUid string required Booking UID calmcp_get_bookings
#
List bookings with pagination (default 100, max 250 per page — use take/skip for more). Supports filtering by status (upcoming, recurring, past, cancelled, unconfirmed), attendee email/name, event type, team, date ranges (afterStart, beforeEnd), and sorting (sortStart, sortEnd, sortCreated). 20 params
List bookings with pagination (default 100, max 250 per page — use take/skip for more). Supports filtering by status (upcoming, recurring, past, cancelled, unconfirmed), attendee email/name, event type, team, date ranges (afterStart, beforeEnd), and sorting (sortStart, sortEnd, sortCreated).
afterCreatedAt string optional Filter bookings created after this ISO 8601 date afterStart string optional Filter bookings starting after this ISO 8601 date afterUpdatedAt string optional Filter bookings updated after this ISO 8601 date attendeeEmail string optional Filter by attendee email attendeeName string optional Filter by attendee name beforeCreatedAt string optional Filter bookings created before this ISO 8601 date beforeEnd string optional Filter bookings ending before this ISO 8601 date beforeUpdatedAt string optional Filter bookings updated before this ISO 8601 date bookingUid string optional Filter by booking UID eventTypeId integer optional Filter by event type ID eventTypeIds string optional Comma-separated event type IDs (e.g. '100,200') skip integer optional Results to skip (offset) sortCreated string optional Sort by creation time sortEnd string optional Sort by end time sortStart string optional Sort by start time sortUpdatedAt string optional Sort by updated time status string optional Comma-separated statuses: upcoming, recurring, past, cancelled, unconfirmed take integer optional Max results to return (default 100, max 250) teamId integer optional Filter by team ID teamsIds string optional Comma-separated team IDs (e.g. '50,60') calmcp_get_busy_times
#
Get busy/blocked time blocks from a connected calendar (e.g. Google Calendar) between two dates. Returns a list of time ranges when the user is unavailable. Required: dateFrom, dateTo (YYYY-MM-DD), credentialId, and externalId. WORKFLOW: (1) Call get_connected_calendars first to get the real credentialId (number) and externalId (e.g. email) for the calendar — NEVER guess or fabricate these. (2) Provide dateFrom and dateTo as YYYY-MM-DD strings. (3) Optionally pass timeZone (IANA, e.g. 'America/New_York') to localise the results. 6 params
Get busy/blocked time blocks from a connected calendar (e.g. Google Calendar) between two dates. Returns a list of time ranges when the user is unavailable. Required: dateFrom, dateTo (YYYY-MM-DD), credentialId, and externalId. WORKFLOW: (1) Call get_connected_calendars first to get the real credentialId (number) and externalId (e.g. email) for the calendar — NEVER guess or fabricate these. (2) Provide dateFrom and dateTo as YYYY-MM-DD strings. (3) Optionally pass timeZone (IANA, e.g. 'America/New_York') to localise the results.
credentialId number required The credential ID of the calendar integration. Use get_connected_calendars to obtain this — never guess. dateFrom string required Start date for the query (e.g. '2024-08-13'). Required. dateTo string required End date for the query (e.g. '2024-08-14'). Required. externalId string required The external calendar ID (e.g. the email address for Google Calendar). Use get_connected_calendars to obtain this — never guess. loggedInUsersTz string optional IANA time zone of the logged-in user (e.g. 'America/New_York'). Used to interpret date boundaries. timeZone string optional IANA time zone for the query (e.g. 'America/New_York'). Defaults to UTC. calmcp_get_conferencing_apps
#
List all conferencing applications connected to the authenticated user's account (e.g. Zoom, Google Meet, Cal Video). 0 params
List all conferencing applications connected to the authenticated user's account (e.g. Zoom, Google Meet, Cal Video).
calmcp_get_connected_calendars
#
List all calendar integrations connected to the authenticated user's account. Returns each calendar's credentialId and externalId, which are required by get_busy_times. Also shows the user's destination calendar. 0 params
List all calendar integrations connected to the authenticated user's account. Returns each calendar's credentialId and externalId, which are required by get_busy_times. Also shows the user's destination calendar.
calmcp_get_default_schedule
#
Get the authenticated user's default schedule. 0 params
Get the authenticated user's default schedule.
calmcp_get_event_type
#
Get a specific event type by its numeric ID (use get_event_types to find IDs). Returns full details including locations, booking fields, and schedule. 1 param
Get a specific event type by its numeric ID (use get_event_types to find IDs). Returns full details including locations, booking fields, and schedule.
eventTypeId integer required Event type ID. Use get_event_types to find this. calmcp_get_event_types
#
List event types. Without parameters returns all event types for the authenticated user. Pass 'username' to list another user's event types, or username + eventSlug for a specific one. Use usernames (comma-separated) for dynamic group event types. 6 params
List event types. Without parameters returns all event types for the authenticated user. Pass 'username' to list another user's event types, or username + eventSlug for a specific one. Use usernames (comma-separated) for dynamic group event types.
eventSlug string optional Slug of a specific event type to return. Must be used together with username. orgId number optional Organization ID to filter by (alternative to orgSlug). orgSlug string optional Organization slug to filter by. sortCreatedAt string optional Sort event types by creation date. username string optional Username of the person whose event types you want to list. Omit to list the authenticated user's event types. usernames string optional Comma-separated usernames for fetching a dynamic group event type (e.g. 'alice,bob'). calmcp_get_me
#
Get the authenticated user's profile including username, email, time zone, default schedule, and organizationId. Call this first when you need the user's own details (email, username, organizationId) for other tools. 0 params
Get the authenticated user's profile including username, email, time zone, default schedule, and organizationId. Call this first when you need the user's own details (email, username, organizationId) for other tools.
calmcp_get_org_membership
#
Get a specific organization membership by its numeric ID. 2 params
Get a specific organization membership by its numeric ID.
membershipId integer required Membership ID. Use get_org_memberships to find this. orgId integer required Organization ID. Use get_me to obtain your organizationId — never guess. calmcp_get_org_memberships
#
List all memberships in an organization. Supports pagination with take/skip. 3 params
List all memberships in an organization. Supports pagination with take/skip.
orgId integer required Organization ID. Use get_me to obtain your organizationId — never guess. skip number optional Results to skip (offset) take number optional Max results to return calmcp_get_org_routing_form_responses
#
Get responses for a specific routing form. Supports filtering by date ranges, routed booking UID, and sorting. 11 params
Get responses for a specific routing form. Supports filtering by date ranges, routed booking UID, and sorting.
orgId integer required Organization ID. Use get_me to obtain your organizationId — never guess. routingFormId string required Routing form ID. Use get_org_routing_forms to find this — never guess. afterCreatedAt string optional Created after (ISO 8601) afterUpdatedAt string optional Updated after (ISO 8601) beforeCreatedAt string optional Created before (ISO 8601) beforeUpdatedAt string optional Updated before (ISO 8601) routedToBookingUid string optional Filter by routed booking UID skip number optional Results to skip sortCreatedAt string optional Sort by created sortUpdatedAt string optional Sort by updated take number optional Max results calmcp_get_org_routing_forms
#
List routing forms for an organization. Supports filtering by team IDs, date ranges, routed booking UID, and sorting. 11 params
List routing forms for an organization. Supports filtering by team IDs, date ranges, routed booking UID, and sorting.
orgId integer required Organization ID. Use get_me to obtain your organizationId — never guess. afterCreatedAt string optional Created after (ISO 8601) afterUpdatedAt string optional Updated after (ISO 8601) beforeCreatedAt string optional Created before (ISO 8601) beforeUpdatedAt string optional Updated before (ISO 8601) routedToBookingUid string optional Filter by routed booking UID skip number optional Results to skip sortCreatedAt string optional Sort by created sortUpdatedAt string optional Sort by updated take number optional Max results teamIds array optional Filter by team IDs calmcp_get_schedule
#
Get a specific schedule by its numeric ID. Returns availability slots and overrides. 1 param
Get a specific schedule by its numeric ID. Returns availability slots and overrides.
scheduleId integer required Schedule ID calmcp_get_schedules
#
List all schedules for the authenticated user. 0 params
List all schedules for the authenticated user.
calmcp_mark_booking_absent
#
Mark host or attendees as absent for a past booking. Set host=true if the host was absent. Use get_booking_attendees to look up real attendee emails before calling this. 3 params
Mark host or attendees as absent for a past booking. Set host=true if the host was absent. Use get_booking_attendees to look up real attendee emails before calling this.
bookingUid string required Booking UID attendees array optional Attendees with absent status. Use real attendee emails from the booking. host boolean optional Whether the host was absent calmcp_reschedule_booking
#
Reschedule a booking to a new time. WORKFLOW: (1) Call get_availability to find open slots — NEVER pick a new time without checking availability first. (2) The new start time must be in UTC ISO 8601. rescheduledBy is only needed for confirmation-required bookings — use the event owner's email (from get_me) for auto-confirmation. Never fabricate emails. 4 params
Reschedule a booking to a new time. WORKFLOW: (1) Call get_availability to find open slots — NEVER pick a new time without checking availability first. (2) The new start time must be in UTC ISO 8601. rescheduledBy is only needed for confirmation-required bookings — use the event owner's email (from get_me) for auto-confirmation. Never fabricate emails.
bookingUid string required Booking UID start string required New start time in UTC, ISO 8601 (e.g. 2024-08-13T09:00:00Z) rescheduledBy string optional Only needed when rescheduling a booking that requires confirmation. If the event owner's email is provided, the rescheduled booking is auto-confirmed; otherwise the owner must confirm. Use get_me to get the authenticated user's email — never fabricate. reschedulingReason string optional Reason for rescheduling calmcp_update_event_type
#
Update an existing event type by ID (use get_event_types to find IDs). Any provided field replaces the current value. Array fields (locations, bookingFields) replace entirely — fetch the current event type first with get_event_type to avoid losing existing values. 28 params
Update an existing event type by ID (use get_event_types to find IDs). Any provided field replaces the current value. Array fields (locations, bookingFields) replace entirely — fetch the current event type first with get_event_type to avoid losing existing values.
eventTypeId integer required Event type ID to update. Use get_event_types to find this. afterEventBuffer integer optional Minutes blocked on calendar after the meeting. beforeEventBuffer integer optional Minutes blocked on calendar before the meeting. bookingFields array optional Updated booking fields array. Replaces ALL existing booking fields. To modify fields, first fetch the current event type with get_event_type, then include all desired fields here. bookingLimitsCount object optional Limit how many times this event can be booked per period (e.g. {day: 2, week: 5}). bookingWindow object optional Limit how far in the future this event can be booked. confirmationPolicy object optional Manual confirmation policy settings. customName string optional Custom event name template. description string optional New description destinationCalendar object optional Which external calendar new bookings are added to. disableGuests boolean optional If true, bookers cannot add guest emails. hidden boolean optional Whether the event type is hidden. hideCalendarNotes boolean optional Hide calendar notes. lengthInMinutes integer optional New duration in minutes lengthInMinutesOptions array optional Multiple duration options the attendee can choose from (e.g. [15, 30, 60]). If provided, the booker picks their preferred duration. locations array optional Updated locations array. Replaces all existing locations. lockTimeZoneToggleOnBookingPage boolean optional Lock timezone on booking page. minimumBookingNotice integer optional Minimum minutes before event that a booking can be made. offsetStart integer optional Offset timeslots by specified minutes. onlyShowFirstAvailableSlot boolean optional Show only the earliest available slot per day. recurrence object optional Recurrence settings (e.g. {frequency: 'weekly', interval: 1, occurrences: 12}). requiresBookerEmailVerification boolean optional Whether booker must verify their email. scheduleId integer optional Schedule ID to use instead of default. Use get_schedules to find schedule IDs. seats object optional Seated event settings. slotInterval integer optional Length of each slot in minutes. slug string optional New URL-friendly slug successRedirectUrl string optional Redirect URL after successful booking. title string optional New title calmcp_update_me
#
Update the authenticated user's profile. Supports name, email, bio, time zone, week start, time format, default schedule, locale, avatar URL, and custom metadata. 10 params
Update the authenticated user's profile. Supports name, email, bio, time zone, week start, time format, default schedule, locale, avatar URL, and custom metadata.
avatarUrl string optional URL of the user's avatar image bio string optional Short biography or description defaultScheduleId integer optional ID of the default schedule to use for event types email string optional Email address locale string optional Locale / language code (e.g. 'en', 'fr', 'de') metadata object optional Custom metadata key-value pairs (max 50 keys, keys ≤40 chars, string values ≤500 chars) name string optional Display name timeFormat integer optional Time format: 12 or 24 timeZone string optional IANA time zone (e.g. America/New_York) weekStart string optional Week start day (e.g. Monday, Sunday) calmcp_update_org_membership
#
Update an organization membership. Can change role, accepted status, or impersonation settings. 5 params
Update an organization membership. Can change role, accepted status, or impersonation settings.
membershipId integer required Membership ID. Use get_org_memberships to find this. orgId integer required Organization ID. Use get_me to obtain your organizationId — never guess. accepted boolean optional Whether accepted disableImpersonation boolean optional Disable impersonation role string optional New role calmcp_update_schedule
#
Update an existing schedule. Array fields (availability, overrides) replace all existing entries. 6 params
Update an existing schedule. Array fields (availability, overrides) replace all existing entries.
scheduleId integer required Schedule ID availability array optional New availability slots. Replaces all existing slots. isDefault boolean optional Set as the user's default schedule. name string optional New name overrides array optional Date-specific overrides. Replaces all existing overrides. timeZone string optional New IANA time zone