Lists the sellers of the organization with a Google or Outlook calendar connected that the caller can see (their own; owners and admins see all; colleagues depending on each seller's sharing: open, private or custom), with providers, sharing settings, overlay color, the last good sync, the state of the sync in words (sync_status ok, failing, stale or never; sync_status_text) and the raw error of a failing one. Their user_id is the vendor_user_id of the calendar operations. Read-only.
Scope
crm:read
Permission
View the module
MCP tool
crm_calendar_vendors_listOn the full surface; on the compact one, mb_execute_operation with id: "crm.calendar.vendors.list".
Declared cost: up to 400 reads and 0 writes per call (they count against the daily quota).
List calendar events and bookings in a time window
crm.calendar.events.list
ReadIdempotentConnected mailboxes and calendarsSince 2026-11-01
For API keys and third-party apps this operation exists only when the organization's owner allows connected calendar content and the credential was granted it; even then it reads only the calendar of the user the credential acts as (other vendor_user_ids are not found) and returns only the events whose organizer or attendees include a CRM person or company (plus the CRM bookings), never the whole calendar; busy-only (masked) events are omitted for them. Returns the events of one or more sellers' Google or Outlook calendars (mirrored in MB Suite) and their confirmed CRM bookings between start_ms and end_ms (ms UTC, at most 62 days; default seller: the caller). Calendars a seller does not share with the caller are skipped; when they share only busy/free, their events come masked (summary '__masked__', masked: true, no attendees). Bookings come in their own list (their calendar event is not repeated) and never include the booker's cancel/reschedule tokens; a booking's booker_email is an empty string when an AI Setter booked without the person's email (reach them by booker_phone).
Only if the organization allows it and the credential has it granted; it returns only what is linked to the CRM from the caller's own mailbox.Connected mailboxes and calendars
Scope
crm:read
Permission
View the module
MCP tool
crm_calendar_events_listOn the full surface; on the compact one, mb_execute_operation with id: "crm.calendar.events.list".
Declared cost: up to 2000 reads and 0 writes per call (they count against the daily quota).
Parameters
start_msintegerqueryrequired
Window start, epoch ms.
end_msintegerqueryrequired
Window end, epoch ms (at most 62 days after start_ms).
vendor_user_idsarray<string>queryoptional
Sellers (user ids from crm.calendar.vendors.list), up to 50; default: the caller.
Creates an event in a seller's Google or Outlook calendar (default: the caller's; another seller's only for an owner or admin, and only if they allow admin edits) with optional location, attendees (they get the invitation) and a Meet/Teams link (with_meet). With meeting it schedules a meeting with a CRM record instead: the event goes to the caller's own calendar with a video link by default, a 'meeting' activity is logged on the deal, person, company or prospect (and the records linked to it) and the deals' last activity moves. Needs a connected calendar (integration_not_connected otherwise); when the provider does not confirm the creation it answers external_outcome_unknown (the event may exist: look at the calendar before creating it again). Returns the event_id that crm.calendar.events.update and delete take. Requires manage_own_calendar_events / manage_any_calendar_events, or create_activity for a meeting.
Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.
Scope
crm:write
Permission
Edit in the module
MCP tool
crm_calendar_events_createOn the full surface; on the compact one, mb_execute_operation with id: "crm.calendar.events.create".
Declared cost: up to 20 reads and 10 writes per call (they count against the daily quota). Touches an external platform (google): it counts against the external operations quota.
Parameters
summarystringbodyrequired
The event's title (a meeting's, up to 300 characters).
start_msintegerbodyrequired
Start, epoch ms.
end_msintegerbodyrequired
End, epoch ms.
time_zonestringbodyrequired
IANA time zone of the event (America/Argentina/Buenos_Aires).
vendor_user_idstringbodyoptional
The seller whose calendar it is (user_id from crm.calendar.vendors.list); default: the caller. A meeting always goes to the caller's own calendar.
descriptionstringbodyoptional
The event's description.
locationstringbodyoptional
Where it is.
attendeesarray<object>bodyoptional
Up to 50 attendees: each one gets the invitation.
with_meetbooleanbodyoptional
Add a Google Meet / Teams link (default: no for an event, yes for a meeting).
providerenumbodyoptional
google or microsoft (Outlook): only when the seller has both connected; default: the one of the mirrored event or the seller's connection.
Values: google, microsoft
meetingobjectbodyoptional
Schedule a meeting with a CRM record: besides the event, a 'meeting' activity is logged on it.
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.
PATCH/v1/crm/calendar/events/{event_id}
Move, resize or edit a calendar event
crm.calendar.events.update
WriteSince 2026-11-01
Updates an event of a seller's Google or Outlook calendar (default: the caller's), by its event_id (the one crm.calendar.events.create returned, or, for a credential with connected calendar content, the one of crm.calendar.events.list). start_ms + end_ms move it (it checks free/busy first and answers slot_conflict on an overlap, unless skip_conflict_check); end_ms alone changes its duration; summary, description, location or attendees edit its details. time_zone is required when the time changes. A booking's event is moved with crm.bookings.reschedule instead. Another seller's calendar only for an owner or admin, and only if they allow admin edits. Requires manage_own_calendar_events / manage_any_calendar_events.
Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.
Scope
crm:write
Permission
Edit in the module
MCP tool
crm_calendar_events_updateOn the full surface; on the compact one, mb_execute_operation with id: "crm.calendar.events.update".
Declared cost: up to 6 reads and 1 writes per call (they count against the daily quota). Touches an external platform (google): it counts against the external operations quota.
Parameters
event_idstringpathrequired
The event's id in Google or Outlook: event_id of crm.calendar.events.create, or id of crm.calendar.events.list (when the credential has connected content).
vendor_user_idstringbodyoptional
The seller whose calendar it is (user_id from crm.calendar.vendors.list); default: the caller.
providerenumbodyoptional
google or microsoft (Outlook): only when the seller has both connected; default: the one of the mirrored event or the seller's connection.
Values: google, microsoft
start_msintegerbodyoptional
New start, epoch ms (with end_ms: it moves the event).
end_msintegerbodyoptional
New end, epoch ms (alone: it changes the duration).
time_zonestringbodyoptional
IANA time zone; required when the time changes.
skip_conflict_checkbooleanbodyoptional
Move it without checking overlaps with other events (default: answers slot_conflict).
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.
DELETE/v1/crm/calendar/events/{event_id}
Delete a calendar event
crm.calendar.events.delete
IrreversibleSince 2026-11-01
Deletes an event from a seller's Google or Outlook calendar (default: the caller's) and its mirror in MB Suite, by its event_id (from crm.calendar.events.create or, with connected calendar content, crm.calendar.events.list); the attendees get the provider's cancellation. The dry run says whether the event is in MB Suite's mirror (validated false when it is not: it may not exist). A copy (title, time, attendees) stays 30 days in the trash for reference, without automatic restore: the event no longer exists in the provider. To cancel a booking use crm.bookings.cancel. Another seller's calendar only for an owner or admin, and only if they allow admin edits. Requires manage_own_calendar_events / manage_any_calendar_events.
Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.
Scope
crm:writeand “Allow deletions” (crm:delete in OAuth)
Permission
Edit in the module
MCP tool
crm_calendar_events_deleteOn the full surface; on the compact one, mb_execute_operation with id: "crm.calendar.events.delete".
Declared cost: up to 6 reads and 2 writes per call (they count against the daily quota). Touches an external platform (google): it counts against the external operations quota.
Parameters
event_idstringpathrequired
The event's id in Google or Outlook: event_id of crm.calendar.events.create, or id of crm.calendar.events.list (when the credential has connected content).
vendor_user_idstringbodyoptional
The seller whose calendar it is (user_id from crm.calendar.vendors.list); default: the caller.
providerenumbodyoptional
google or microsoft (Outlook): only when the seller has both connected; default: the one of the mirrored event or the seller's connection.
Values: google, microsoft
Response
oktrue
trash_item_idstring
The trash item this deletion left: the item_id of platform.trash.restore (POST /trash/{item_id}/restore). Missing if nothing went to the trash.
trash_item_idsarray<string>
Only when the deletion left more than one copy: all of them, the first being trash_item_id.
trash_expires_atnumber
When the copy leaves the trash for good (epoch ms): 30 days after the deletion.
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.
PATCH/v1/crm/calendar/sharing/{vendor_user_id}
Change who sees a seller's calendar
crm.calendar.sharing.update
WriteIdempotentSince 2026-11-01
Updates a seller's calendar sharing inside MB Suite: who sees it (view_mode open, private, or custom with allowed_user_ids), how much colleagues see (view_details_mode all, crm_related or busy_only), whether owners and admins may edit it (allow_admin_edit) and its overlay color. Fields left out keep their value. The seller and allowed_user_ids must be people with access to the organization (vendor_not_found, recipient_without_access). Own calendar: requires manage_own_booking; another seller's: owner, admin or CRM admin only.
Scope
crm:write
Permission
Edit in the module
MCP tool
crm_calendar_sharing_updateOn the full surface; on the compact one, mb_execute_operation with id: "crm.calendar.sharing.update".
Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).
Parameters
vendor_user_idstringpathrequired
The seller whose calendar sharing changes: a person with access to the organization (crm.calendar.vendors.list or crm.team.list).
view_modeenumbodyoptional
Who sees it: open (every colleague), private (only the seller, owners and admins) or custom (allowed_user_ids).
Values: open, private, custom
allowed_user_idsarray<string>bodyoptional
With view_mode custom: who sees it, up to 200 people with access to the organization.
view_details_modeenumbodyoptional
How much colleagues see: all, crm_related (only events with CRM contacts) or busy_only (free/busy).
Pulls the latest changes of a seller's connected Google and/or Outlook calendars into MB Suite right away (the mirror also syncs by itself every few minutes). Anyone who can see that calendar may run it; there is a short cooldown between runs (cooldown_active with retry_after). Returns the events upserted and deleted; error carries the first provider failure, if any, while the other providers still applied.
Scope
crm:write
Permission
View the module
MCP tool
crm_calendar_syncOn the full surface; on the compact one, mb_execute_operation with id: "crm.calendar.sync".
Declared cost: up to 200 reads and 500 writes per call (they count against the daily quota). Touches an external platform (google): it counts against the external operations quota.
Parameters
vendor_user_idstringbodyrequired
The seller whose calendar syncs (user_id from crm.calendar.vendors.list).
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.