Skip to content

Calendar

Google Calendar tools — check availability, find free slots, and create, update, or delete events on connected Google accounts.

Full name: campaignstack_get_free_slots

google_integrations:read Read-only Idempotent

Find the next available time slots in the user’s Google Calendar. Searches horizonDays past fromDate (default 21), then returns the first N gaps that fit the requested duration. Events marked ‘Show as free’, declined invitations, birthdays, and entries covering a whole day or more do NOT block a slot: a multi-day entry is usually a trip or a holiday, not a commitment. When businessHoursOnly is true (default), slots are restricted to the account’s configured scheduling hours (schedulingStartHour/schedulingEndHour, default 9 AM to 6 PM) in the Google account’s timezone (auto-detected from the calendar on connect; falls back to UTC). Requires a Google account to be connected and linked to the workspace. With one connected Google account, googleAccountId can be omitted; with several it is required. Call this when scheduling and open times are needed, before campaignstack_create_calendar_event. It does not check one proposed time: campaignstack_check_calendar_availability does.

NameTypeRequiredDefaultDescription
workspaceIdstringNoWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach.
googleAccountIdstringNoGoogle account ID to use. Optional while the workspace has exactly one connected Google account; required once it has several, so a meeting never lands on the wrong person’s calendar.
fromDatestringYesStart of the search window (ISO 8601 string, e.g. ‘2026-06-17T00:00:00Z’). Slots earlier than this date are excluded.
durationMinutesintegerNo30Duration of each slot in minutes (default: 30)
countintegerNo3Number of free slots to return (default: 3)
businessHoursOnlybooleanNotrueIf true (default), only return slots within business hours (9 AM to 6 PM in the Google account’s timezone, defaults to UTC if not set)
horizonDaysintegerNo21How many days past fromDate to search (default: 21, max: 60). Widen it when the lead asked for a later date, or when a holiday or trip blocks the near weeks. (max: 60)

Full name: campaignstack_check_calendar_availability

google_integrations:read Read-only Idempotent

Check whether a specific time slot is available in the user’s Google Calendar. Returns { available, conflictingEvents } where conflictingEvents is a list of events overlapping the requested range (each with summary, start, end). Events marked ‘Show as free’, declined invitations, birthdays, and entries covering a whole day or more do NOT count as conflicts, exactly as in campaignstack_get_free_slots. Requires a Google account to be connected and linked to the workspace. With one connected Google account, googleAccountId can be omitted; with several it is required. Call this when one specific time was proposed and needs confirming before booking with campaignstack_create_calendar_event. It does not search a range: campaignstack_get_free_slots does.

NameTypeRequiredDefaultDescription
workspaceIdstringNoWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach.
googleAccountIdstringNoGoogle account ID to use. Optional while the workspace has exactly one connected Google account; required once it has several, so a meeting never lands on the wrong person’s calendar.
startTimestringYesStart of the time range to check (ISO 8601 string, e.g. ‘2026-06-17T14:00:00Z’)
endTimestringYesEnd of the time range to check (ISO 8601 string, e.g. ‘2026-06-17T15:00:00Z’)

Full name: campaignstack_create_calendar_event

google_integrations:write Destructive

Create a Google Calendar event and optionally invite attendees. When attendeeEmails are provided, Google sends invite emails automatically (sendUpdates=all). Requires a Google account to be connected and linked to the workspace. With one connected Google account, googleAccountId can be omitted; with several it is required. Returns { eventId, htmlLink } on success. Call this once a time is confirmed, typically via campaignstack_get_free_slots. When attendeeEmails names someone outside the workspace, tell the user first: the invite goes out immediately.

NameTypeRequiredDefaultDescription
workspaceIdstringNoWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach.
googleAccountIdstringNoGoogle account ID to use. Optional while the workspace has exactly one connected Google account; required once it has several, so a meeting never lands on the wrong person’s calendar.
summarystringYesEvent title (min length: 1)
startTimestringYesEvent start time (ISO 8601, e.g. ‘2026-06-17T14:00:00Z’)
endTimestringYesEvent end time (ISO 8601, e.g. ‘2026-06-17T15:00:00Z’)
descriptionstringNoOptional event description / agenda
attendeeEmailsstring[]NoOptional list of attendee email addresses. Google Calendar sends invites automatically when sendUpdates=all.
locationstringNoOptional event location (address, room name, or video link)

Full name: campaignstack_update_calendar_event

google_integrations:write Destructive

Update (reschedule) an existing Google Calendar event. All fields are optional; only the provided fields are changed (PATCH semantics). When attendeeEmails are provided, they replace the existing attendee list and Google sends update notifications automatically (sendUpdates=all). Requires a Google account to be connected and linked to the workspace. With one connected Google account, googleAccountId can be omitted; with several it is required. Returns { eventId, htmlLink } on success. Call this to reschedule or edit an existing event, using the eventId from campaignstack_create_calendar_event. Replacing attendeeEmails notifies both lists, so tell the user first.

NameTypeRequiredDefaultDescription
workspaceIdstringNoWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach.
googleAccountIdstringNoGoogle account ID to use. Optional while the workspace has exactly one connected Google account; required once it has several, so a meeting never lands on the wrong person’s calendar.
eventIdstringYesGoogle Calendar event ID to update (min length: 1)
summarystringNoNew event title
startTimestringNoNew event start time (ISO 8601, e.g. ‘2026-06-17T14:00:00Z’)
endTimestringNoNew event end time (ISO 8601, e.g. ‘2026-06-17T15:00:00Z’)
descriptionstringNoNew event description / agenda
attendeeEmailsstring[]NoNew list of attendee email addresses (replaces existing attendees). Google Calendar sends update notifications automatically.
locationstringNoNew event location (address, room name, or video link)

Full name: campaignstack_delete_calendar_event

google_integrations:write Destructive

Delete (cancel) a Google Calendar event. By default, cancellation notifications are sent to all attendees (sendNotifications=true). Requires a Google account to be connected and linked to the workspace. With one connected Google account, googleAccountId can be omitted; with several it is required. Returns { deleted: true } on success. Call this when a booked meeting should be cancelled. Attendees get a cancellation email by default, so confirm first; campaignstack_update_calendar_event handles a reschedule instead.

NameTypeRequiredDefaultDescription
workspaceIdstringNoWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach.
googleAccountIdstringNoGoogle account ID to use. Optional while the workspace has exactly one connected Google account; required once it has several, so a meeting never lands on the wrong person’s calendar.
eventIdstringYesGoogle Calendar event ID to delete (min length: 1)
sendNotificationsbooleanNotrueIf true (default), Google sends cancellation notifications to all attendees.