Calendar
Google Calendar tools — check availability, find free slots, and create, update, or delete events on connected Google accounts.
Tools (5)
Section titled “Tools (5)”get_free_slots
Section titled “get_free_slots”Full name: campaignstack_get_free_slots
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.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
workspaceId | string | No | — | Workspace 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. |
googleAccountId | string | No | — | Google 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. |
fromDate | string | Yes | — | Start of the search window (ISO 8601 string, e.g. ‘2026-06-17T00:00:00Z’). Slots earlier than this date are excluded. |
durationMinutes | integer | No | 30 | Duration of each slot in minutes (default: 30) |
count | integer | No | 3 | Number of free slots to return (default: 3) |
businessHoursOnly | boolean | No | true | If 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) |
horizonDays | integer | No | 21 | How 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) |
check_calendar_availability
Section titled “check_calendar_availability”Full name: campaignstack_check_calendar_availability
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.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
workspaceId | string | No | — | Workspace 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. |
googleAccountId | string | No | — | Google 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. |
startTime | string | Yes | — | Start of the time range to check (ISO 8601 string, e.g. ‘2026-06-17T14:00:00Z’) |
endTime | string | Yes | — | End of the time range to check (ISO 8601 string, e.g. ‘2026-06-17T15:00:00Z’) |
create_calendar_event
Section titled “create_calendar_event”Full name: campaignstack_create_calendar_event
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.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
workspaceId | string | No | — | Workspace 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. |
googleAccountId | string | No | — | Google 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. |
summary | string | Yes | — | Event title (min length: 1) |
startTime | string | Yes | — | Event start time (ISO 8601, e.g. ‘2026-06-17T14:00:00Z’) |
endTime | string | Yes | — | Event end time (ISO 8601, e.g. ‘2026-06-17T15:00:00Z’) |
description | string | No | — | Optional event description / agenda |
attendeeEmails | string[] | No | — | Optional list of attendee email addresses. Google Calendar sends invites automatically when sendUpdates=all. |
location | string | No | — | Optional event location (address, room name, or video link) |
update_calendar_event
Section titled “update_calendar_event”Full name: campaignstack_update_calendar_event
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.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
workspaceId | string | No | — | Workspace 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. |
googleAccountId | string | No | — | Google 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. |
eventId | string | Yes | — | Google Calendar event ID to update (min length: 1) |
summary | string | No | — | New event title |
startTime | string | No | — | New event start time (ISO 8601, e.g. ‘2026-06-17T14:00:00Z’) |
endTime | string | No | — | New event end time (ISO 8601, e.g. ‘2026-06-17T15:00:00Z’) |
description | string | No | — | New event description / agenda |
attendeeEmails | string[] | No | — | New list of attendee email addresses (replaces existing attendees). Google Calendar sends update notifications automatically. |
location | string | No | — | New event location (address, room name, or video link) |
delete_calendar_event
Section titled “delete_calendar_event”Full name: campaignstack_delete_calendar_event
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.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
workspaceId | string | No | — | Workspace 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. |
googleAccountId | string | No | — | Google 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. |
eventId | string | Yes | — | Google Calendar event ID to delete (min length: 1) |
sendNotifications | boolean | No | true | If true (default), Google sends cancellation notifications to all attendees. |