Google Calendar
Your Toolhouse AI Worker can connect to Google Calendar using 48 specialized tools.
Auth Connection
This service requires an auth connection to use its tools. You can set this up in your Toolhouse dashboard under Auth Connections.
Tools (48)
Google Calendar Acl Delete
Google Calendar Acl DeleteIntegration name: GOOGLECALENDAR_ACL_DELETE
Deletes an access control rule from a Google Calendar. Use when you need to remove sharing permissions for a user, group, or domain.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
rule_id
string
✅
"user:test@example.com"
ACL rule identifier.
calendar_id
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
Google Calendar Acl Get
Google Calendar Acl GetIntegration name: GOOGLECALENDAR_ACL_GET
Retrieves a specific access control rule for a calendar. Use when you need to check permissions for a specific user, group, or domain.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
rule_id
string
✅
"user:email@domain.com"
ACL rule identifier. Format: 'scope_type:scope_value' or 'default'. Valid scope types: 'user' (email), 'group' (group email), 'domain' (domain name), 'default' (public access). Examples: 'user:john@example.com', 'group:team@example.com', 'domain:example.com', 'default'. Note: 'me' is NOT valid; use actual email/domain. The rule must exist - use GOOGLECALENDAR_LIST_ACL_RULES to find valid IDs.
calendar_id
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
Google Calendar Acl Insert
Google Calendar Acl InsertIntegration name: GOOGLECALENDAR_ACL_INSERT
Creates an access control rule for a calendar. Use when you need to grant sharing permissions to a user, group, or domain.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
role
string
✅
"reader"
The role assigned to the scope. Possible values are: "none" - Provides no access; "freeBusyReader" - Provides read access to free/busy information; "reader" - Provides read access to the calendar; "writer" - Provides read and write access to the calendar; "owner" - Provides ownership of the calendar.
scope
object
✅
—
The extent to which calendar access is granted by this ACL rule. Specifies who gets the access (user, group, domain, or default).
calendar_id
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
send_notifications
boolean
true
Whether to send notifications about the calendar sharing change. Optional. The default is true.
Google Calendar Acl List
Google Calendar Acl ListIntegration name: GOOGLECALENDAR_ACL_LIST
Retrieves the list of access control rules (ACLs) for a specified calendar, providing the necessary 'rule_id' values required for updating specific ACL rules.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
pageToken
string
" nextPageToken_value"
Token specifying which result page to return. Optional.
syncToken
string
"nextSyncToken_value"
Token obtained from the nextSyncToken field returned on the last page of a previous list operation. It makes the result of this list operation contain only entries that have changed since then. Optional. The default is to retrieve all entries.
calendarId
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
maxResults
integer
10
Maximum number of entries returned on one result page. Optional. The default is 100.
showDeleted
boolean
false
Whether to include deleted ACLs in the result. Optional. The default is False.
Google Calendar Acl Patch
Google Calendar Acl PatchIntegration name: GOOGLECALENDAR_ACL_PATCH
Updates an existing access control rule for a calendar using patch semantics (partial update). This allows modifying specific fields without affecting other properties. IMPORTANT: The ACL rule must already exist on the calendar. This action cannot create new rules. If you receive a 404 Not Found error, the rule does not exist - use ACL insert to create it first, or use ACL list to verify available rules. Each patch request consumes three quota units. For domain-type ACL rules, if PATCH fails with 500 error, this action will automatically fallback to UPDATE method.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
role
string
"reader"
The role assigned to the scope. Possible values are: "none" - Provides no access; "freeBusyReader" - Provides read access to free/busy information; "reader" - Provides read access to the calendar (private events appear but details are hidden); "writer" - Provides read and write access to the calendar (private events and details are visible); "owner" - Provides ownership of the calendar (all permissions of writer plus ability to see and manipulate ACLs).
scope
object
—
The extent to which calendar access is granted by this ACL rule. Optional for patch operations. Must include type (one of: 'user', 'group', 'domain', 'default') and value (email address or domain name) for all types except 'default'.
rule_id
string
✅
"user:test.user@example.com"
ACL rule identifier of an existing rule. IMPORTANT: The rule must already exist on the calendar - this action cannot create new rules, only modify existing ones. Use the ACL list action to find existing rule IDs, or use the ACL insert action to create a new rule first. Format: 'type:value', such as 'user:email@example.com' or 'group:group@example.com'.
calendar_id
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
send_notifications
boolean
true
Whether to send notifications about the calendar sharing change. Note that there are no notifications on access removal. Optional. The default is True.
Google Calendar Acl Update
Google Calendar Acl UpdateIntegration name: GOOGLECALENDAR_ACL_UPDATE
Updates an access control rule for the specified calendar.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
role
string
✅
"reader"
The role assigned to the scope. Possible values are: - "none" - Provides no access. - "freeBusyReader" - Provides read access to free/busy information. - "reader" - Provides read access to the calendar. Private events will appear to users with reader access, but event details will be hidden. - "writer" - Provides read and write access to the calendar. Private events will appear to users with writer access, and event details will be visible. - "owner" - Provides ownership of the calendar. This role has all of the permissions of the writer role with the additional ability to see and manipulate ACLs.
rule_id
string
✅
"user:test.user@example.com"
ACL rule identifier.
calendar_id
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
send_notifications
boolean
—
Whether to send notifications about the calendar sharing change. Note that there are no notifications on access removal. Optional. The default is True.
Google Calendar Acl Watch
Google Calendar Acl WatchIntegration name: GOOGLECALENDAR_ACL_WATCH
Tool to watch for changes to ACL resources. Use when you need to set up real-time notifications for access control list modifications on a calendar.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
id
string
✅
"01234567-89ab-cdef-0123456789ab"
A UUID or similar unique string that identifies this channel.
type
string
"web_hook"
The type of delivery mechanism used for this channel. Valid values are "web_hook" or "webhook".
token
string
"target=myApp-myAclChannelDest"
An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.
params
object
—
Additional parameters controlling delivery channel behavior. Optional.
address
string
✅
"https://example.com/notifications"
The address where notifications are delivered for this channel.
calendarId
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
Google Calendar Batch Events
Google Calendar Batch EventsIntegration name: GOOGLECALENDAR_BATCH_EVENTS
Execute up to 1000 event mutations (create/patch/delete) in one Google Calendar HTTP batch request with per-item status/results. Use this to materially reduce round-trips for bulk operations like migrations, cleanup, or large-scale updates.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
fail_fast
boolean
—
If true, stop processing after the first batch containing any 4xx error (except 404 on DELETE). Default is false.
operations
array
✅
—
List of batch operations to execute. Maximum 1000 operations per request.
Google Calendar Calendar List Delete
Google Calendar Calendar List DeleteIntegration name: GOOGLECALENDAR_CALENDAR_LIST_DELETE
Tool to remove a calendar from the user's calendar list. Use when you need to unsubscribe from or hide a calendar from the user's list.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
calendar_id
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the 'primary' keyword.
Google Calendar Calendar List Get
Google Calendar Calendar List GetIntegration name: GOOGLECALENDAR_CALENDAR_LIST_GET
Retrieves metadata for a SINGLE specific calendar from the user's calendar list by its calendar ID. This action requires a calendarId parameter and returns details about that one calendar only. NOTE: This does NOT list all calendars. To list all calendars in the user's calendar list, use GOOGLECALENDAR_CALENDAR_LIST_LIST instead.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
calendarId
string
✅
"primary"
Required. The calendar identifier for the single calendar to retrieve. Use 'primary' for the primary calendar of the authenticated user, or provide a specific calendar ID (e.g., an email address or group calendar ID). To find calendar IDs, first use GOOGLECALENDAR_CALENDAR_LIST_LIST to list all calendars.
Google Calendar Calendar List Insert
Google Calendar Calendar List InsertIntegration name: GOOGLECALENDAR_CALENDAR_LIST_INSERT
Inserts an existing calendar into the user's calendar list, making it visible in the UI. Calendars (e.g., newly created ones) won't appear in the list or UI until explicitly inserted.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
id
string
✅
"examplecalendar@group.calendar.google.com"
The identifier of the calendar to insert. Must be a valid calendar ID in email format (e.g., ‘user@example.com’ for a user’s calendar or ‘calendarid@group.calendar.google.com’ for a shared calendar). Note: The ‘primary’ keyword is not supported for this operation - use the actual email address of the primary calendar instead. The calendar must exist and you must have appropriate access permissions.
hidden
boolean
—
Whether the calendar has been hidden from the list. Accepts only boolean values: true or false. If not specified, the API defaults to false.
colorId
string
"1"
The color of the calendar. This is an ID referring to an entry in the calendarCore color palette.
selected
boolean
—
Whether the calendar is selected and visible in the calendar list. Accepts only boolean values: true or false. If not specified, the API defaults to false.
backgroundColor
string
"#000000"
The background color of the calendar in the Web UI. (Hexadecimal color code)
foregroundColor
string
"#FFFFFF"
The foreground color of the calendar in the Web UI. (Hexadecimal color code)
summaryOverride
string
—
The summary that the authenticated user has set for this calendar.
color_rgb_format
boolean
—
Whether to use the foregroundColor and backgroundColor fields to write the calendar colors (RGB). If this feature is used, the index-based colorId field will be set to the best matching option automatically. Optional. The default is False.
defaultReminders
array
—
The default reminders that the authenticated user has for this calendar.
notificationSettings
object
—
The notifications that the authenticated user is receiving for this calendar.
Google Calendar Calendar List Patch
Google Calendar Calendar List PatchIntegration name: GOOGLECALENDAR_CALENDAR_LIST_PATCH
Updates an existing calendar on the user's calendar list using patch semantics. This method allows partial updates, modifying only the specified fields.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
hidden
boolean
true
Whether calendar is hidden.
colorId
string
"6"
ID for calendar color from colors endpoint.
selected
boolean
true
Whether calendar content shows in UI.
calendar_id
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. Use "primary" keyword for the currently logged in user's primary calendar.
colorRgbFormat
boolean
true
Whether to use RGB for foreground/background colors.
backgroundColor
string
"#0088aa"
Hex color for calendar background.
foregroundColor
string
"#ffffff"
Hex color for calendar foreground.
summaryOverride
string
"My Work Calendar"
User-set summary for the calendar.
defaultReminders
array
—
List of default reminders.
notificationSettings
object
—
Notification settings for the calendar.
Google Calendar Calendar List Update
Google Calendar Calendar List UpdateIntegration name: GOOGLECALENDAR_CALENDAR_LIST_UPDATE
Updates a calendar list entry's display/subscription settings (color, visibility, reminders, selection) for the authenticated user — does not modify the underlying calendar resource (title, timezone, etc.). To modify the calendar itself, use GOOGLECALENDAR_CALENDARS_UPDATE.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
hidden
boolean
true
Whether calendar is hidden.
colorId
string
"17"
ID for calendar color from colors endpoint.
selected
boolean
true
Whether calendar content shows in UI.
calendar_id
string
✅
"examplecalendar@group.calendar.google.com"
Calendar identifier. Must be an actual calendar ID (e.g., "examplecalendar@group.calendar.google.com" or "c_abc123...@group.calendar.google.com"). To retrieve valid calendar IDs, use the GOOGLECALENDAR_LIST_CALENDARS action first. The "primary" alias is not valid for calendarList.update.
colorRgbFormat
boolean
true
Whether to use RGB for foreground/background colors.
backgroundColor
string
"#0088aa"
Hex color for calendar background.
foregroundColor
string
"#ffffff"
Hex color for calendar foreground.
summaryOverride
string
"My Work Calendar"
User-set summary for the calendar.
defaultReminders
array
—
List of default reminders.
notificationSettings
object
—
Notification settings for the calendar.
Google Calendar Calendar List Watch
Google Calendar Calendar List WatchIntegration name: GOOGLECALENDAR_CALENDAR_LIST_WATCH
Watch for changes to CalendarList resources using push notifications. Use this to receive real-time updates when calendar list entries are modified.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
id
string
✅
"01234567-89ab-cdef-0123456789ab"
A UUID or similar unique string that identifies this channel. Maximum 64 characters.
type
string
✅
"web_hook"
The type of delivery mechanism used for this channel. Must be "web_hook" or "webhook".
token
string
"verification-token-123"
An arbitrary string delivered to the target address with each notification. Maximum 256 characters. Used for channel verification and message routing.
params
object
—
Additional parameters controlling delivery channel behavior.
address
string
✅
"https://example.com/webhook"
The HTTPS URL where notifications are delivered for this channel. Must have a valid SSL certificate.
expiration
integer
1735689600000
Unix timestamp in milliseconds indicating when the API should stop sending notifications.
Google Calendar Calendars Delete
Google Calendar Calendars DeleteIntegration name: GOOGLECALENDAR_CALENDARS_DELETE
Deletes a secondary calendar that you own or have delete permissions on. Deletion is permanent and irreversible — verify the correct calendar_id before calling. You cannot delete your primary calendar or calendars you only have read/write access to. Use calendarList.list to find calendars with owner accessRole. For primary calendars, use calendars.clear instead. Parallel calls may trigger userRateLimitExceeded; sequence bulk deletions.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
calendar_id
string
✅
"example_calendar_id@group.calendar.google.com"
Calendar identifier for a secondary calendar you own or have delete permissions on. Use calendarList.list to find deletable calendar IDs (look for accessRole "owner"). Primary calendars cannot be deleted; use the Clear Calendar action instead.
Google Calendar Calendars Update
Google Calendar Calendars UpdateIntegration name: GOOGLECALENDAR_CALENDARS_UPDATE
Full PUT-style update that overwrites all calendar metadata fields; unspecified optional fields are cleared. Use GOOGLECALENDAR_PATCH_CALENDAR to update only a subset of fields. Mutates the underlying calendar resource (title, description, timeZone, etc.); use GOOGLECALENDAR_CALENDAR_LIST_UPDATE to change per-user display properties like color.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
summary
string
✅
—
Title of the calendar. Must be a non-empty string; passing an empty string clears the calendar title.
location
string
—
Geographic location of the calendar as free-form text. Optional.
timeZone
string
—
The time zone of the calendar. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) Optional.
calendarId
string
✅
—
Calendar identifier. Use 'primary' to update the primary calendar of the currently logged in user, or provide a specific calendar ID (typically in email format like 'abc123@group.calendar.google.com'). To retrieve calendar IDs call the calendarList.list method. IMPORTANT: This is NOT the calendar's display name/title. NOTE: For better performance, prefer providing the actual calendar ID instead of 'primary', as the 'primary' alias requires an additional API call to resolve.
description
string
—
Description of the calendar. Optional.
Google Calendar Channels Stop
Google Calendar Channels StopIntegration name: GOOGLECALENDAR_CHANNELS_STOP
Tool to stop watching resources through a notification channel. Use when you need to discontinue push notifications for a specific channel subscription.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
id
string
✅
"4ba78bf0-6a47-11e2-bcfd-0800200c9a66"
A UUID or similar unique string that identifies this channel.
token
string
—
An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.
resourceId
string
✅
"Glz7TVFWTQFgQtbe1Sgnrfno6FM"
An opaque ID that identifies the resource being watched on this channel. Stable across different API versions.
Google Calendar Clear Calendar
Google Calendar Clear CalendarIntegration name: GOOGLECALENDAR_CLEAR_CALENDAR
Clears a primary calendar by deleting all events from it. The calendar itself is preserved; only its events are removed. Primary calendars cannot be deleted entirely.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
calendar_id
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
Google Calendar Colors Get
Google Calendar Colors GetIntegration name: GOOGLECALENDAR_COLORS_GET
Returns the color definitions for calendars and events. Use when you need to retrieve the available color palette for styling calendars or events.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
No parameters required.
Google Calendar Create Event
Google Calendar Create EventIntegration name: GOOGLECALENDAR_CREATE_EVENT
Create a Google Calendar event using start_datetime plus duration fields. The organizer is added as an attendee unless exclude_organizer is True. By default adds Google Meet link (works for Workspace, gracefully falls back for personal Gmail). Attendees can be email strings (required) or objects with email and optional fields. No conflict checking is performed; use GOOGLECALENDAR_FREE_BUSY_QUERY to detect overlaps before creating. Returns event id and htmlLink nested under data.response_data. Example: { "start_datetime": "2025-01-16T13:00:00", "timezone": "America/New_York", "event_duration_hour": 1, "event_duration_minutes": 30, "summary": "Client sync", "attendees": ["required@example.com", {"email": "optional@example.com", "optional": true}] }
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
summary
string
—
Summary (title) of the event.
location
string
—
Geographic location of the event as free-form text.
timezone
string
—
IANA timezone name from the timezone database (e.g., 'America/New_York', 'Europe/London', 'Asia/Jerusalem', 'UTC'). Required if datetime is naive. For recurring events, start and end must include a timeZone. If not provided, UTC is used. If datetime includes timezone info (Z or offset), this field is optional and defaults to UTC. IMPORTANT: Must be a valid IANA timezone identifier. Values like 'EST', 'PST', 'ISRAEL TIME', or other abbreviations are NOT valid IANA timezone names.
attendees
array
—
List of attendees. Each attendee can be either: (1) A string email address (e.g., 'user@example.com'), or (2) An object with 'email' (required), 'optional' (boolean, default false), 'displayName' (string), 'comment' (string), 'additionalGuests' (integer), and 'resource' (boolean). To mark an attendee as optional (not required), use object format: {'email': 'user@example.com', 'optional': true}. IMPORTANT: Only valid email addresses are accepted. Plain names cannot be used.
eventType
string
—
Type of the event, immutable post-creation. 'workingLocation' (REQUIRES Google Workspace Enterprise). Note: 'fromGmail' events cannot be created via API.
recurrence
array
—
List of RRULE, EXRULE, RDATE, EXDATE lines for recurring events. Supported frequencies: DAILY, WEEKLY, MONTHLY, YEARLY. For recurring events, start.timeZone and end.timeZone must be present. UNTIL values follow RFC 5545: date-only (YYYYMMDD) for all-day events, or UTC datetime with Z suffix (YYYYMMDDTHHMMSSZ) for timed events. UNTIL values with time but missing Z suffix are auto-corrected. Provide an empty list to remove recurrence so the event becomes non-recurring.
visibility
string
—
Event visibility: 'default', 'public', 'private', or 'confidential'.
calendar_id
string
"primary"
Calendar identifier. Use 'primary' (recommended) for the user's main calendar. Alternatively, use a calendar ID from the user's accessible calendar list. Calendar IDs look like email addresses (e.g., 'xyz@group.calendar.google.com' for shared calendars). Important: Arbitrary email addresses will NOT work - the calendar must exist in the user's calendar list with appropriate access permissions. Use GOOGLECALENDAR_LIST_CALENDARS to retrieve valid calendar IDs.
description
string
—
Description of the event. Can contain HTML. Optional. Must be omitted for 'birthday' event type.
end_datetime
string
—
Event end time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS. When provided, this parameter takes precedence over event_duration_hour and event_duration_minutes. If not provided, the end time is calculated using start_datetime + duration. Must be after start_datetime. Fractional seconds and timezone info will be automatically stripped if provided. Examples: '2025-01-16T14:30:00', '2025-01-16T14:30'.
send_updates
string
—
Options for who should receive notifications about event changes.
transparency
string
—
'opaque' (busy) or 'transparent' (available).
start_datetime
string
✅
—
REQUIRED. Event start time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS. IMPORTANT: Natural language expressions like 'tomorrow', 'next Monday', '2pm tomorrow' are NOT supported and will be rejected. You must provide the exact date and time in ISO format. Fractional seconds (e.g., .000) and timezone info (Z, +, -) will be automatically stripped if provided. Examples: '2025-01-16T13:00:00', '2025-01-16T13:00'.
guestsCanModify
boolean
—
If True, guests can modify the event.
exclude_organizer
boolean
—
If True, the organizer will NOT be added as an attendee. Default is False (organizer is included).
birthdayProperties
object
—
Properties for birthday events.
create_meeting_room
boolean
—
Defaults to True. When True, for CREATE operations creates a Google Meet link; for UPDATE operations preserves existing conference data if present, or adds a new Meet link if none exists. Google Workspace accounts will successfully receive a Meet link. Personal Gmail accounts and other unsupported accounts will gracefully fallback to creating an event without a Meet link when conference creation fails. Set to False to skip Meet link operations (won't create new or modify existing conference data). The fallback ensures event creation succeeds even when conference features are unavailable due to account limitations.
event_duration_hour
integer
—
Number of hours for the event duration. Supports multi-day events (e.g., 240 hours = 10 days). For durations under 1 hour, use event_duration_minutes instead. Ignored if end_datetime is provided.
extended_properties
object
—
Extended properties of the event for storing custom metadata. Contains 'private' (visible only on this calendar) and/or 'shared' (visible to all attendees) dictionaries mapping string keys to string values. Example: {'private': {'key1': 'value1'}, 'shared': {'key2': 'value2'}}
focusTimeProperties
object
—
Properties for focusTime events. REQUIRES Google Workspace Enterprise account with Focus Time feature enabled.
guestsCanInviteOthers
boolean
—
Whether attendees other than the organizer can invite others to the event.
outOfOfficeProperties
object
—
Properties for outOfOffice events.
event_duration_minutes
integer
—
Duration in minutes (0-59 ONLY). NEVER use 60+ minutes - use event_duration_hour=1 instead. Maximum value is 59. Combined duration (hours + minutes) must be greater than 0. Ignored if end_datetime is provided.
guestsCanSeeOtherGuests
boolean
—
Whether attendees other than the organizer can see who the event's attendees are.
workingLocationProperties
object
—
Properties for workingLocation events. REQUIRES Google Workspace Enterprise. Constraints discovered from testing: - Must set transparency='transparent' and visibility='public' - Description must be omitted - Depending on 'type', include one of 'homeOffice', 'officeLocation', or 'customLocation'
Google Calendar Delete Event
Google Calendar Delete EventIntegration name: GOOGLECALENDAR_DELETE_EVENT
Deletes a specified event by event_id from a Google Calendar (calendar_id); idempotent — a 404 for an already-deleted event is a no-op. Bulk deletions may trigger rateLimitExceeded or userRateLimitExceeded; cap concurrency to 5–10 requests and apply exponential backoff.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
event_id
string
✅
—
Unique identifier of the event to delete. For standalone events, use the base event ID (e.g., 'abc123def456'). For recurring event instances, use the instance ID format 'baseEventId_YYYYMMDDTHHMMSSZ' (e.g., 'abc123def456_20260522T093000Z') where the timestamp suffix represents the instance's original start time in UTC. Instance IDs can be obtained from the EVENTS_INSTANCES action. To delete ALL occurrences of a recurring event, use the base event ID without the timestamp suffix. Must be the internal API identifier from a prior API response — UI-visible identifiers, URL-encoded variants, or shortened IDs are invalid and cause 404/validation errors.
calendar_id
string
"primary"
Identifier of the Google Calendar (e.g., email address, specific ID, or 'primary' for the authenticated user's main calendar) from which the event will be deleted. Read-only or subscribed calendars (calendars not owned by the authenticated user) return 403 on deletion attempts.
send_updates
string
—
Options for who should receive notifications about event changes.
send_notifications
boolean
—
Deprecated. Whether to send notifications about the deletion of the event. Note that some emails might still be sent.
Google Calendar Duplicate Calendar
Google Calendar Duplicate CalendarIntegration name: GOOGLECALENDAR_DUPLICATE_CALENDAR
Creates a new, empty Google Calendar with the specified title (summary). Newly created calendars default to UTC timezone; use GOOGLECALENDAR_PATCH_CALENDAR afterward to set the desired timeZone if needed.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
summary
string
✅
"Project Alpha Tasks"
Title for the new Google Calendar to be created. Required and must be a non-empty string.
Google Calendar Events Get
Google Calendar Events GetIntegration name: GOOGLECALENDAR_EVENTS_GET
Retrieves a SINGLE event by its unique event_id (REQUIRED). This action does NOT list or search events - it fetches ONE specific event when you already know its ID. If you want to list events within a time range, search for events, or filter by criteria like time_min/time_max, use GOOGLECALENDAR_EVENTS_LIST instead.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
event_id
string
✅
"0a9160c4c367855d09a84f8d4350bda2"
REQUIRED. The unique identifier of the specific event to retrieve. You must already know this ID (e.g., from a previous EVENTS_LIST call or event creation response). This action fetches ONE event by ID - it cannot list or search events. To find events by time range or search criteria, use GOOGLECALENDAR_EVENTS_LIST instead.
time_zone
string
"America/New_York"
Time zone used in the response. If not specified, the calendar's time zone is used.
calendar_id
string
"primary"
Identifier of the Google Calendar (e.g., email address, specific ID, or 'primary' for the authenticated user's main calendar) from which to retrieve the event.
max_attendees
integer
—
Maximum number of attendees to include in the response. If there are more than the specified number, only the participant is returned.
Google Calendar Events Import
Google Calendar Events ImportIntegration name: GOOGLECALENDAR_EVENTS_IMPORT
Tool to import an event as a private copy to a calendar. Use when you need to add an existing event to a calendar using its iCalUID. Only events with eventType='default' can be imported.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
end
object
✅
—
The (exclusive) end time of the event. For all-day events, use 'date' field; for timed events, use 'dateTime' and 'timeZone' fields.
start
object
✅
—
The (inclusive) start time of the event. For all-day events, use 'date' field; for timed events, use 'dateTime' and 'timeZone' fields. dateTime must be ISO 8601 format (e.g., '2024-01-15T10:00:00'); timeZone should match the calendar's timezone to avoid shifted times.
source
object
—
Source from which the event was created.
status
string
"confirmed"
Status of the event. Possible values: 'confirmed', 'tentative', 'cancelled'.
colorId
string
—
The color of the event. This is an ID referring to an entry in the event colors definition.
iCalUID
string
✅
"test-event-import-12345@example.com"
Event unique identifier as defined in RFC5545. This is required to identify the event being imported.
summary
string
—
Title of the event.
location
string
—
Geographic location of the event as free-form text.
sequence
integer
—
Sequence number as per iCalendar.
attendees
array
—
The attendees of the event.
reminders
object
—
Information about the event's reminders for the authenticated user.
recurrence
array
—
List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Each string must include the full prefix (e.g., 'RRULE:FREQ=WEEKLY;BYDAY=MO'); omitting the prefix causes a 400 error.
visibility
string
—
Visibility of the event. Possible values: 'default', 'public', 'private', 'confidential'. Default: 'default'.
attachments
array
—
File attachments for the event.
calendar_id
string
"primary"
Calendar identifier. Use 'primary' for the logged-in user's primary calendar or the calendar's email address.
description
string
—
Description of the event. Can contain HTML.
transparency
string
—
Whether the event blocks time on the calendar. Possible values: 'opaque' (blocks time), 'transparent' (does not block time). Default: 'opaque'.
guestsCanModify
boolean
—
Whether attendees other than the organizer can modify the event. Default: False.
extendedProperties
object
—
Extended properties of the event.
supportsAttachments
boolean
—
Whether API client performing operation supports event attachments. Default: False.
conferenceDataVersion
integer
—
Version number of conference data supported by the API client. Version 0 assumes no conference data support and ignores conference data in the event's body. Version 1 enables copying of ConferenceData as well as for creating new conferences using the createRequest field of conferenceData. Default: 0.
guestsCanInviteOthers
boolean
—
Whether attendees other than the organizer can invite others to the event. Default: True.
guestsCanSeeOtherGuests
boolean
—
Whether attendees other than the organizer can see who the event's attendees are. Default: True.
Google Calendar Events Instances
Google Calendar Events InstancesIntegration name: GOOGLECALENDAR_EVENTS_INSTANCES
Returns instances of the specified recurring event. Use timeMin/timeMax to constrain the window; omitting bounds can return large result sets and is quota-heavy. On high-volume calls, 403 rateLimitExceeded or 429 too_many_requests may occur; apply exponential backoff (1s, 2s, 4s) before retrying.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
eventId
string
✅
"a1b2c3d4e5f6g7h8i9j0k1l2m3"
REQUIRED. The ID of the recurring event whose instances you want to retrieve. You must first use GOOGLECALENDAR_FIND_EVENT or GOOGLECALENDAR_EVENTS_LIST to find recurring events and get their IDs. This action only works with recurring events that have a recurrence rule.
timeMax
string
"2024-07-31T23:59:59Z"
Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to filter by start time. Must be an RFC3339 timestamp with mandatory time zone offset.
timeMin
string
"2024-07-01T00:00:00Z"
Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to filter by end time. Must be an RFC3339 timestamp with mandatory time zone offset.
timeZone
string
"America/Los_Angeles"
Time zone used in the response. Optional. The default is the time zone of the calendar.
pageToken
string
—
Token specifying which result page to return. Optional.
calendarId
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
maxResults
integer
100
Maximum number of events returned on one result page. By default the value is 250 events. The page size can never be larger than 2500 events. Optional.
showDeleted
boolean
true
Whether to include deleted events (with status equals "cancelled") in the result. Cancelled instances of recurring events will still be included if singleEvents is False. Optional. The default is False.
maxAttendees
integer
5
The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
originalStart
string
"2024-07-15T10:00:00Z"
The original start time of the instance in the result. Optional.
Google Calendar Events List
Google Calendar Events ListIntegration name: GOOGLECALENDAR_EVENTS_LIST
Returns events on the specified calendar. TIMEZONE WARNING: When using timeMin/timeMax with UTC timestamps (ending in 'Z'), the time window is interpreted in UTC regardless of the calendar's timezone. For example, querying '2026-01-19T00:00:00Z' to '2026-01-20T00:00:00Z' on a calendar in America/Los_Angeles (UTC-8) covers 2026-01-18 4pm to 2026-01-19 4pm local time, potentially missing events on the intended local date. To query for a specific local date, use timestamps with the appropriate timezone offset in timeMin/timeMax (e.g., '2026-01-19T00:00:00-08:00' for PST).
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
q
string
—
Free text search terms to find events that match these terms in various fields. Optional.
iCalUID
string
—
Specifies an event ID in the iCalendar format to be provided in the response. Optional. Use this if you want to search for an event by its iCalendar ID.
orderBy
string
—
The order of the events returned in the result. Optional. The default is an unspecified, stable order. Acceptable values are: "startTime", "updated". When set to "startTime", singleEvents must be true. The action automatically sets singleEvents=true when orderBy='startTime'.
timeMax
string
—
Upper bound (exclusive) for an event's start time to filter by. Optional. If unset, no start-time upper bound is applied. Must be an RFC3339 timestamp with mandatory time zone offset (e.g., 2011-06-03T10:00:00-07:00 or 2011-06-03T10:00:00Z). Milliseconds may be provided but are ignored. If timeMin is set, timeMax must be greater than timeMin. TIMEZONE WARNING: If using UTC times (ending in 'Z') but the calendar is in a different timezone, the time window may not align with local calendar dates. For example, '2026-01-19T00:00:00Z' to '2026-01-20T00:00:00Z' covers 2026-01-18 4pm to 2026-01-19 4pm in America/Los_Angeles (UTC-8). To query a specific local date, use timestamps with the appropriate local timezone offset (e.g., '2026-01-19T00:00:00-08:00' for PST). NOTE: Natural language expressions like 'today', 'tomorrow', 'next week' are NOT supported.
timeMin
string
—
Lower bound (exclusive) for an event's end time to filter by. Optional. If unset, no end-time lower bound is applied. Must be an RFC3339 timestamp with mandatory time zone offset (e.g., 2011-06-03T10:00:00-07:00 or 2011-06-03T10:00:00Z). Milliseconds may be provided but are ignored. If timeMax is set, timeMin must be smaller than timeMax. TIMEZONE WARNING: If using UTC times (ending in 'Z') but the calendar is in a different timezone, the time window may not align with local calendar dates. For example, '2026-01-19T00:00:00Z' to '2026-01-20T00:00:00Z' covers 2026-01-18 4pm to 2026-01-19 4pm in America/Los_Angeles (UTC-8). To query a specific local date, use timestamps with the appropriate local timezone offset (e.g., '2026-01-19T00:00:00-08:00' for PST). NOTE: Natural language expressions like 'today', 'tomorrow', 'next week' are NOT supported.
timeZone
string
—
Time zone used in the response for formatting event times. Optional. Use an IANA time zone identifier (e.g., America/Los_Angeles). Defaults to the user's primary time zone. Offsets (e.g., '-03:00', 'UTC+0') and abbreviations (e.g., 'IST', 'PST') are invalid. NOTE: This parameter only affects how event times are displayed in the response. It does NOT change how timeMin/timeMax filtering is interpreted. To query a specific local date, use timestamps with the appropriate timezone offset directly in timeMin/timeMax (e.g., '2026-01-19T00:00:00-08:00').
pageToken
string
—
Opaque pagination token from a previous response's nextPageToken field. Must be the exact string returned by the API - do not use placeholder values like 'NEXT', 'next', '1', '2', etc. Omit this parameter entirely for the first page of results. Optional.
syncToken
string
—
Token from nextSyncToken to return only entries changed since the last list. Cannot be combined with iCalUID, orderBy, privateExtendedProperty, q, sharedExtendedProperty, timeMin, timeMax, or updatedMin. Deletions since the previous list are always included; showDeleted cannot be false in this mode. The action automatically removes conflicting parameters when syncToken is provided.
calendarId
string
"primary"
Calendar identifier. Use "primary" for the user's main calendar, or a calendar ID from the user's accessible calendar list. Arbitrary email addresses will NOT work - the calendar must exist in the user's calendar list. Use GOOGLECALENDAR_LIST_CALENDARS to retrieve valid calendar IDs. Defaults to "primary". Empty strings will be treated as "primary". Do NOT use Composio internal IDs like connectedAccountId (which start with "ca*") - these will be automatically replaced with "primary".
eventTypes
string
—
Event types to return. Optional. Pass a single value only. If unset, returns all event types. Acceptable values are: "birthday", "default", "focusTime", "fromGmail", "outOfOffice", "workingLocation".
maxResults
integer
—
Maximum number of events returned on one result page. The number of events in the resulting page may be less than this value, or none at all, even if there are more events matching the query. Incomplete pages can be detected by a non-empty nextPageToken field in the response. By default the value is 250 events. The page size can never be larger than 2500 events. Optional. Must be >= 1 if provided.
updatedMin
string
—
Lower bound for an event's last modification time (RFC3339). When specified, entries deleted since this time are always included regardless of showDeleted. Optional.
showDeleted
boolean
—
Include cancelled events (status="cancelled"). Optional; default is false. This surfaces cancelled (soft-deleted) events, not items in the Trash. When syncToken or updatedMin is used, deletions since those markers are included regardless of showDeleted. Recurring interaction: if singleEvents=false and showDeleted=false, cancelled instances of a recurring series may still be included; if showDeleted=true and singleEvents=true, only single deleted instances (not parent series) are returned.
maxAttendees
integer
—
The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional. Must be >= 1 if provided.
singleEvents
boolean
—
Whether to expand recurring events into instances and only return single one-off events and instances of recurring events. Optional. The default is False.
alwaysIncludeEmail
boolean
—
Deprecated and ignored.
showHiddenInvitations
boolean
—
Whether to include hidden invitations in the result. Optional. The default is False. Hidden invitations are events where your attendee entry has responseStatus='needsAction' and attendees[].self==true. When true, such invitations are included.
sharedExtendedProperty
string
—
Extended properties constraint specified as propertyName=value. Matches only shared properties. This parameter might be repeated multiple times to return events that match all given constraints.
privateExtendedProperty
string
—
Extended properties constraint specified as propertyName=value. Matches only private properties. This parameter might be repeated multiple times to return events that match all given constraints.
composio_replaced_calendar_id
string
—
Internal field to track if calendarId was replaced
Google Calendar Events List All Calendars
Google Calendar Events List All CalendarsIntegration name: GOOGLECALENDAR_EVENTS_LIST_ALL_CALENDARS
Return a unified event list across all calendars in the user's calendar list for a given time range. Use when you need a single view of all events across multiple calendars. An inverted or incorrect time range silently returns empty results rather than an error. An empty items list means no events matched the filters—adjust time_min, time_max, or q before concluding no events exist.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
q
string
—
Free text search terms to find events that match these terms in any field, except for extended properties. Optional.
time_max
string
✅
—
Upper bound (exclusive) for an event's start time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset (e.g., 2011-06-03T10:00:00-07:00 or 2011-06-03T10:00:00Z). If timezone offset is missing, UTC (Z) will be automatically appended. Required.
time_min
string
✅
—
Lower bound (inclusive) for an event's end time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset (e.g., 2011-06-03T10:00:00-07:00 or 2011-06-03T10:00:00Z). If timezone offset is missing, UTC (Z) will be automatically appended. Required.
event_types
array
—
Event types to return. Optional.
calendar_ids
array
—
Optional list of specific calendar IDs to query. If not provided, all calendars from the user's calendar list will be queried.
show_deleted
boolean
—
Whether to include deleted events (with status equals 'cancelled') in the result. Optional. The default is False.
single_events
boolean
—
Whether to expand recurring events into instances and only return single one-off events and instances of recurring events. Optional. The default is True.
response_detail
string
—
Level of detail in the response. 'minimal' (default) returns only the compact summary_view, omitting the large events array to reduce token usage. 'full' returns both summary_view and the full detailed events array.
max_results_per_calendar
integer
—
Maximum number of events returned per calendar. Optional. If not provided, defaults to the API's default (250). Results may be paginated; follow nextPageToken in the response until absent to retrieve the complete event list.
Google Calendar Events Move
Google Calendar Events MoveIntegration name: GOOGLECALENDAR_EVENTS_MOVE
Moves an event to another calendar, i.e., changes an event's organizer.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
event_id
string
✅
"7cbh8j70fer2s71jgm1bmeb0f1"
Event identifier. To retrieve event identifiers call the events.list method.
calendar_id
string
✅
"primary"
Calendar identifier of the source calendar. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
destination
string
✅
"secondaryCalendarId"
Calendar identifier of the destination calendar. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
send_updates
string
"all"
Options for who should receive notifications about event changes.
Google Calendar Events Watch
Google Calendar Events WatchIntegration name: GOOGLECALENDAR_EVENTS_WATCH
Watch for changes to Events resources. Watch channels expire; persist the channel id per calendarId to re-establish watches after expiration or restarts.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
id
string
✅
"01234567-89ab-cdef-0123456789ab"
A UUID or similar unique string that identifies this channel.
type
string
"web_hook"
The type of delivery mechanism used for this channel.
token
string
"target=myApp-myCalendarChannelDest"
An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.
params
object
—
Additional parameters controlling delivery channel behavior. Optional.
address
string
✅
"https://example.com/notifications"
The address where notifications are delivered for this channel. Must be a publicly accessible HTTPS URL; http:// or localhost URLs will not receive notifications.
payload
boolean
—
A Boolean value to indicate whether payload is wanted. Optional.
calendarId
string
✅
"primary"
Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the "primary" keyword.
Google Calendar Find Event
Google Calendar Find EventIntegration name: GOOGLECALENDAR_FIND_EVENT
Finds events in a specified Google Calendar using text query, time ranges (event start/end, last modification), and event types. Ensure timeMin is not chronologically after timeMax if both are provided. Results may span multiple pages; always follow nextPageToken until absent to avoid silently missing events. Validate the correct match from results by checking summary, start.dateTime, and organizer.email before using event_id for mutations. An empty items array means no events matched — widen filters rather than treating it as an error.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
query
string
"Project Alpha Review"
Free-text search terms to find events. This query is matched against various event fields including summary, description, location, attendees' details (displayName, email), and organizer's details. Cannot search by event_id. Performs full-text match (not exact); broad terms may return unrelated events. For person-based matching, prefer attendees[].email over display names. If results appear incomplete, use GOOGLECALENDAR_EVENTS_LIST with client-side filtering.
order_by
string
"startTime"
Order of events: 'startTime' (ascending by start time) or 'updated' (ascending by last modification time). Note: 'startTime' requires single_events=true. Use 'updated' if you need to include recurring masters (e.g., cancelled series).
time_max
string
"2024-12-31T23:59:59Z"
Upper bound (exclusive) for an event's start time to filter by. Only events starting before this time are included. Accepts multiple formats: 1. RFC3339 timestamp (e.g., '2024-12-06T13:00:00Z') 2. Comma-separated date/time parts (e.g., '2024,12,06,13,00,00') 3. Simple datetime string (e.g., '2024-12-06 13:00:00') Set to the first instant after the desired period to avoid missing boundary events, especially all-day events (date-only fields). Overly wide ranges expand many recurring instances, causing large payloads and high latency — constrain to the minimum required window.
time_min
string
"2024-01-01T00:00:00Z"
Lower bound (exclusive) for an event's end time to filter by. Only events ending after this time are included. Accepts multiple formats: 1. RFC3339 timestamp (e.g., '2024-12-06T13:00:00Z') 2. Comma-separated date/time parts (e.g., '2024,12,06,13,00,00') 3. Simple datetime string (e.g., '2024-12-06 13:00:00') RFC3339 timestamps must include explicit timezone offsets; missing or mismatched offsets can silently exclude matching events. To align with the calendar's timezone, retrieve it via GOOGLECALENDAR_GET_CALENDAR.
page_token
string
—
Token from a previous response's nextPageToken to fetch the subsequent page of results. Always follow every nextPageToken until absent; skipping pagination silently omits events on busy calendars.
calendar_id
string
"primary"
Identifier of the Google Calendar to query. IMPORTANT: This must be a valid calendar identifier, NOT a calendar name/title. Valid formats are: 'primary' (the authenticated user's primary calendar), an email address (e.g., 'user@example.com'), or a calendar ID (e.g., 'abc123xyz@group.calendar.google.com'). To find the calendar ID for a named calendar, first use the List Calendars action (GOOGLECALENDAR_LIST_CALENDARS) to retrieve all available calendars with their IDs. 'primary' searches only the authenticated user's primary calendar; to search all calendars, retrieve each ID via GOOGLECALENDAR_LIST_CALENDARS and query separately.
event_types
array
"default"
Event types to include. Supported values: 'birthday', 'default', 'focusTime', 'outOfOffice', 'workingLocation'.
max_results
integer
—
Maximum number of events per page (1-2500).
updated_min
string
"2024-07-01T00:00:00Z"
Lower bound (exclusive) for an event's last modification time to filter by. Only events updated after this time are included. When specified, events deleted since this time are also included, regardless of the show_deleted parameter. Accepts multiple formats: 1. RFC3339 timestamp (e.g., '2024-12-06T13:00:00Z') 2. Comma-separated date/time parts (e.g., '2024,12,06,13,00,00') 3. Simple datetime string (e.g., '2024-12-06 13:00:00')
show_deleted
boolean
—
Include events whose status is 'cancelled'. This surfaces cancelled/deleted events, not a separate 'trash' view. Behavior with recurring events: when single_events=true, only individual cancelled instances are returned (the recurring master is omitted); to include cancelled recurring masters, set single_events=false. If updated_min is provided, events deleted since that time are included regardless of this flag.
single_events
boolean
—
When true, recurring event series are expanded into their individual instances. When false, only the recurring master events are returned. Note: Ordering by 'startTime' requires singleEvents=true. For large calendars, it is strongly recommended to specify both timeMin and timeMax to limit the expansion window and improve performance.
Google Calendar Find Free Slots
Google Calendar Find Free SlotsIntegration name: GOOGLECALENDAR_FIND_FREE_SLOTS
Finds both free and busy time slots in Google Calendars for specified calendars within a defined time range. If time_min is not provided, defaults to the current timestamp in the specified timezone. If time_max is not provided, defaults to 23:59:59 of the day specified in time_min (if provided), otherwise defaults to 23:59:59 of the current day in the specified timezone. Returns busy intervals and calculates free slots by finding gaps between busy periods; time_min must precede time_max if both are provided. This action retrieves free and busy time slots for the specified calendars over a given time period. It analyzes the busy intervals from the calendars and provides calculated free slots based on the gaps in the busy periods. Returned free slots are unfiltered by duration; callers must filter intervals to those fully containing the required meeting length. No event metadata (titles, descriptions, links) is returned; use GOOGLECALENDAR_EVENTS_LIST for event details.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
items
array
["primary"]
List of calendar identifiers to query for free/busy information. Pass as a simple list of strings, e.g., ['primary'] or ['primary', 'user@example.com']. Valid values include: 'primary' (authenticated user's main calendar), calendar IDs from the user's calendar list (typically ending in @group.calendar.google.com), or email addresses of users whose free/busy information you want to query. The FreeBusy API will return error information for any calendars that are not accessible or invalid in the response under the 'errors' key for each calendar. Calendars omitted from items or inaccessible are treated as free (not unknown), which can silently produce incorrect availability results.
time_max
string
"2024-12-06T18:00:00Z"
End datetime for the query interval. Accepts ISO, comma-separated, or simple datetime formats. If provided without an explicit timezone, it is interpreted in the specified timezone. If not provided, defaults to 23:59:59 of the day specified in time_min (if provided), otherwise defaults to 23:59:59 of the current day in the specified timezone. Maximum span between time_min and time_max is approximately 90 days per Google Calendar freeBusy API limit. time_max is exclusive; to cover a full day, set time_max to 00:00:00 of the following day in the target timezone rather than 23:59:59.
time_min
string
"2024-12-06T13:00:00Z"
Start datetime for the query interval. Accepts ISO, comma-separated, or simple datetime formats. If provided without an explicit timezone, it is interpreted in the specified timezone. If not provided, defaults to the current timestamp in the specified timezone to ensure only future/bookable slots are returned. Maximum span between time_min and time_max is approximately 90 days per Google Calendar freeBusy API limit.
timezone
string
"UTC"
IANA timezone identifier (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo'). Determines how naive time_min/time_max are interpreted and the timezone used in the response for timeMin, timeMax, busy periods, and calculated free slots. Note: 'local' is not supported; use a specific IANA timezone name.
group_expansion_max
integer
—
Maximum calendar identifiers to return for a single group. Must be between 1 and 100 (inclusive). Values exceeding 100 will be rejected.
calendar_expansion_max
integer
—
Maximum calendars for which FreeBusy information is provided. Must be between 1 and 50 (inclusive). Values exceeding 50 will be rejected.
Google Calendar Free Busy Query
Google Calendar Free Busy QueryIntegration name: GOOGLECALENDAR_FREE_BUSY_QUERY
DEPRECATED: Use GOOGLECALENDAR_FIND_FREE_SLOTS instead (though this tool provides wider secondary/shared calendar coverage). Returns opaque busy intervals only—no event titles or details; use GOOGLECALENDAR_EVENTS_LIST when event details are needed.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
items
array
✅
—
List of calendars and/or groups to query. Accepts either strings (e.g., ['primary', 'user@example.com']) or objects with an 'id' field (e.g., [{'id': 'primary'}]). String values are automatically converted to the proper format. Only calendars with at least freeBusyReader-level access are queried; omitting shared/secondary calendars can hide real conflicts. Batch all attendees into one call to avoid 403 rateLimitExceeded or 429 tooManyRequests errors.
timeMax
string
✅
—
The end of the interval for the query formatted as per RFC3339. Exclusive bound; must be greater than timeMin. Keep the timeMin–timeMax window within ~90 days; larger spans may return empty or degraded results.
timeMin
string
✅
—
The start of the interval for the query formatted as per RFC3339. Must be strictly less than timeMax. For full-day windows, use local 00:00 in the target timezone to avoid DST/off-by-one errors.
timeZone
string
—
Time zone used in the response. Optional. The default is UTC. Defaults to UTC, which skews working-hours analysis for users in other timezones; always supply a valid IANA timezone (e.g., 'America/New_York').
groupExpansionMax
integer
—
Maximal number of calendar identifiers to be provided for a single group. Optional. An error is returned for a group with more members than this value. Maximum value is 100.
calendarExpansionMax
integer
—
Maximal number of calendars for which FreeBusy information is to be provided. Optional. Maximum value is 50.
Google Calendar Get Calendar
Google Calendar Get CalendarIntegration name: GOOGLECALENDAR_GET_CALENDAR
Retrieves a specific Google Calendar, identified by calendar_id, to which the authenticated user has access. Response includes timeZone (IANA format, e.g., 'America/Los_Angeles') — use it directly when constructing timeMin/timeMax in other tools to avoid DST errors. An empty defaultReminders list is valid (no defaults configured). Insufficient accessRole may omit fields like defaultReminders and colorId.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
calendar_id
string
"primary"
Identifier of the Google Calendar to retrieve. Must be 'primary' (the default) for the user's main calendar, or an email-like identifier (e.g., 'user@example.com' or 'en.usa#holiday@group.v.calendar.google.com'). IMPORTANT: Calendar display names/titles (e.g., 'Work', 'Vacation') are NOT valid identifiers and will result in errors. To find a calendar's ID, use the LIST_CALENDARS action which returns the 'id' field for each calendar.
Google Calendar Get Calendar Profile
Google Calendar Get Calendar ProfileIntegration name: GOOGLECALENDAR_GET_CALENDAR_PROFILE
DEPRECATED: Use CalendarListGet instead. Tool to retrieve the authenticated user's primary calendar profile. Use when you need to get information about the user's main calendar, including timezone, settings, and preferences.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
No parameters required.
Google Calendar Get Current Date Time
Google Calendar Get Current Date TimeIntegration name: GOOGLECALENDAR_GET_CURRENT_DATE_TIME
Gets the current date and time, allowing for a specific timezone offset. Call this tool first before computing relative dates (e.g., 'tomorrow', 'next Monday') to avoid off-by-one-day errors across timezones.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
timezone
—
"America/New_York"
Timezone specification. Accepts: (1) IANA timezone identifier (e.g., 'America/New_York', 'Asia/Kolkata', 'Europe/London') - RECOMMENDED, (2) Common timezone abbreviations (e.g., 'PST', 'EST', 'CST', 'GMT', 'UTC') - will be auto-converted to IANA, or (3) Numeric UTC offset in hours (e.g., -5, 5.5). Use positive values for east of UTC, negative for west. Default 0 is UTC.
Google Calendar List Buildings
Google Calendar List BuildingsIntegration name: GOOGLECALENDAR_LIST_BUILDINGS
Lists all buildings for a Google Workspace customer account with full details including addresses, coordinates, and floor names. Use this action when you need to retrieve the complete list of physical building locations configured in Google Workspace Calendar resources. This is useful for workspace administrators managing conference room and resource scheduling across multiple office buildings. Requires Google Workspace administrator privileges with Directory API access.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
customer
string
"my_customer"
The unique ID for the customer's Google Workspace account. Use 'my_customer' alias to represent your account's customer ID. As an account administrator, this alias represents your account's customer ID.
pageToken
string
"next_page_token_value"
Token to specify the next page in the list. Obtained from nextPageToken in a previous response. Omit for the first page.
maxResults
integer
25
Maximum number of buildings to return per page. Defaults to 25 for optimal performance.
Google Calendar List Calendar Resources
Google Calendar List Calendar ResourcesIntegration name: GOOGLECALENDAR_LIST_CALENDAR_RESOURCES
Retrieves calendar resources (such as conference rooms) from a Google Workspace domain using the Admin SDK Directory API. Use this action when you need to list available meeting rooms, conference spaces, or other bookable calendar resources in an organization. The action supports filtering by resource category, capacity, building location, and other criteria. IMPORTANT: This requires Admin SDK Directory API access and appropriate admin permissions - it is NOT available for personal Gmail accounts, only Google Workspace domains.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
query
string
"resourceCategory=CONFERENCE_ROOM"
Search query to filter calendar resources. Each clause is 'field operator value'. Supported operators: '=' (exact match), '!=' (mismatch), ':' (prefix/HAS match — for prefix match, follow the value with '*'). Supported logical operators: AND, NOT (in that order of precedence). IMPORTANT: Numeric comparison operators (>, <, >=, <=) are NOT supported by the Google Admin Directory API for this endpoint and will cause a 400 Bad Request — 'capacity' can only be filtered by exact equality (e.g., 'capacity=10'). Supported fields: generatedResourceName, name, buildingId, floor_name, capacity, featureInstances.feature.name, resourceEmail, resourceCategory.
orderBy
string
"resourceName"
Specifies sorting order for results. Use field names like 'resourceId', 'resourceName', 'capacity', 'buildingId', 'floorName' optionally followed by ' desc' for descending order. Multiple fields can be separated by commas (e.g., 'buildingId, capacity desc').
customer
string
"my_customer"
The unique ID for the customer's Google Workspace account. Use 'my_customer' as an alias for the account's customer ID.
pageToken
string
"nextPageToken123"
Token for retrieving subsequent pages in paginated results. Use the nextPageToken from a previous response.
maxResults
integer
25
Maximum number of results to return per page.
Google Calendar List Calendars
Google Calendar List CalendarsIntegration name: GOOGLECALENDAR_LIST_CALENDARS
Retrieves calendars from the user's Google Calendar list, with options for pagination and filtering. Loop through all pages using nextPageToken until absent to avoid missing calendars. Use the primary flag and accessRole field from the response to identify calendars — display names are not valid calendar_id values. Read access (listing) does not imply write OAuth scopes.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
page_token
string
" nextPageToken123"
Token for the page of results to return, from a previous response.
sync_token
string
"syncToken123"
Sync token from a previous list request to get only changed entries; showDeleted, showHidden, and pageToken are ignored if provided. Also ignores minAccessRole. An HTTP 410 Gone response means the token has expired; perform a full resync by omitting sync_token.
max_results
integer
25
Maximum number of calendars to return per page. Max 250.
show_hidden
boolean
true
Include calendars not typically shown in the UI.
show_deleted
boolean
true
Include deleted calendars in the result.
min_access_role
string
"reader"
Minimum access role for calendars returned. Valid values are 'freeBusyReader', 'owner', 'reader', 'writer'. freeBusyReader calendars expose only free/busy slots — no event details and writes fail with 403. Omit this filter to include read-only calendars.
Google Calendar List Settings
Google Calendar List SettingsIntegration name: GOOGLECALENDAR_LIST_SETTINGS
DEPRECATED: Use GOOGLECALENDAR_SETTINGS_LIST instead. Tool to return all user settings for the authenticated user. Use when you need to retrieve calendar settings.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
pageToken
string
—
Token for pagination to retrieve subsequent result pages
maxResults
integer
—
Maximum number of settings to return
Google Calendar Patch Calendar
Google Calendar Patch CalendarIntegration name: GOOGLECALENDAR_PATCH_CALENDAR
Partially updates (PATCHes) an existing Google Calendar, modifying only the fields provided. At least one of summary, description, location, or timezone must be provided. Empty strings for description or location clear them.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
summary
string
"Team Meetings"
New title for the calendar; cannot be an empty string when provided. At least one of summary, description, location, or timezone must be provided.
location
string
"Paris, France"
New geographic location of the calendar (e.g., 'Paris, France').
timezone
string
"Europe/Zurich"
New IANA Time Zone Database name for the calendar (e.g., 'Europe/Zurich', 'America/New_York'). Calendars duplicated via GOOGLECALENDAR_DUPLICATE_CALENDAR may default to UTC; set the correct timezone explicitly after duplication.
calendar_id
string
✅
"primary"
The unique identifier of the Google Calendar to update. Use 'primary' for the main calendar, or a calendar's unique ID (typically in email format like 'abc123@group.calendar.google.com'). IMPORTANT: This is NOT the calendar's display name/title - use GOOGLECALENDAR_LIST_CALENDARS to find the 'id' field for a calendar.
description
string
—
New description for the calendar.
Google Calendar Patch Event
Google Calendar Patch EventIntegration name: GOOGLECALENDAR_PATCH_EVENT
Update specified fields of an existing event in a Google Calendar using patch semantics (array fields like attendees are fully replaced if provided); ensure the calendar_id and event_id are valid and the user has write access to the calendar.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
source
object
—
Input model for event source.
status
string
"confirmed"
Status of the event.
summary
string
"Updated Team Meeting"
New title for the event.
color_id
string
"1"
Color ID for the event (1-11). Use GOOGLECALENDAR_COLORS_GET to retrieve available colors.
end_time
string
"2024-07-01T11:00:00-07:00"
New end time (RFC3339 timestamp, e.g., '2024-07-01T11:00:00-07:00'). Uses timezone if provided, otherwise UTC. For all-day events, use YYYY-MM-DD format (exclusive end date). Optional when updating start_time - the original event duration will be preserved if end_time is not specified. Must be strictly after start_time; mismatched or mixed formats cause HTTP 400 timeRangeEmpty.
event_id
string
✅
"pna920peji8r3jj2a18m6bk8ms"
The unique technical identifier of the event to update. IMPORTANT: This is NOT the event title/name. Event IDs are opaque strings typically base32hex encoded (5-1024 characters using lowercase a-v and digits 0-9). For recurring event instances, the ID format is 'baseEventId_YYYYMMDDTHHMMSSZ' with an underscore separator (e.g., 'abc123def456_20260115T100000Z'). To get an event ID, first use GOOGLECALENDAR_FIND_EVENT or GOOGLECALENDAR_EVENTS_LIST to search for events and retrieve their IDs. Use master event ID to update the entire recurring series; use instance ID to update only that occurrence — confirm scope before patching.
location
string
"Conference Room B"
New geographic location (physical address or virtual meeting link).
sequence
integer
0
Sequence number as per iCalendar specification. Incremented on each event update.
timezone
string
"America/Los_Angeles"
IANA Time Zone Database name for start/end times (e.g., 'America/Los_Angeles'). Used if start_time and end_time are provided and not all-day dates; defaults to UTC if unset. Mismatched or missing timezone with offset timestamps silently shifts event to unintended wall-clock time.
attendees
array
["user1@example.com","user2@example.com"]
List of valid email addresses for attendees (e.g., 'user@example.com'). Replaces existing attendees. Provide an empty list to remove all.
reminders
object
—
Input model for reminders.
recurrence
array
["RRULE:FREQ=WEEKLY;BYDAY=TU;COUNT=10"]
RRULE, EXRULE, RDATE and EXDATE lines per RFC5545 for recurring events. Replaces existing recurrence rules if provided.
start_time
string
"2024-07-01T10:00:00-07:00"
New start time (RFC3339 timestamp, e.g., '2024-07-01T10:00:00-07:00'). Uses timezone if provided, otherwise UTC. For all-day events, use YYYY-MM-DD format. When only start_time is provided without end_time, the event's original duration is preserved automatically.
visibility
string
"default"
Visibility of the event.
attachments
array
—
File attachments (max 25). Each with 'fileUrl' (required) and optional 'title', 'mimeType'. Requires supportsAttachments=true.
calendar_id
string
✅
"primary"
Identifier of the calendar. Use 'primary' for the primary calendar of the logged-in user. To find other calendar IDs, use the calendarList.list method. Must be provided in snake_case format.
description
string
"Weekly team sync meeting to discuss project updates."
New description for the event; can include HTML.
send_updates
string
"all"
Whether to send update notifications to attendees. Uses default user behavior if unspecified. Set explicitly to avoid unintended notifications when removing attendees or making bulk updates.
transparency
string
"opaque"
Whether the event blocks time on the calendar. 'opaque' (default) blocks time, 'transparent' does not.
max_attendees
integer
10
Maximum attendees in response; does not affect invited count. If more, response includes organizer only. Must be positive.
rsvp_response
string
"accepted"
RSVP response status for the authenticated user. Updates only the current user's response status without affecting other attendees. Note: RSVP is only supported for regular calendar events (eventType='default'); attempting to RSVP to focusTime, outOfOffice, birthday, or workingLocation events will result in an error.
conference_data
object
—
Input model for conference data.
attendees_omitted
boolean
true
Whether attendees may have been omitted from the event's representation.
guests_can_modify
boolean
true
Whether attendees other than the organizer can modify the event (default: false).
anyone_can_add_self
boolean
true
Whether anyone can invite themselves to the event (default: false).
extended_properties
object
—
Input model for extended properties.
supports_attachments
boolean
true
Client application supports event attachments. Set to True if so.
focus_time_properties
object
—
Input model for focus time properties.
conference_data_version
integer
0
API client's conference data support version. Set to 1 to manage conference details (e.g., Google Meet links); 0 (default) ignores conference data. Setting to 1 enables reading/preserving conference data but does not generate a new Meet link — use GOOGLECALENDAR_UPDATE_EVENT with create_meeting_room=true to create one.
guests_can_invite_others
boolean
true
Whether attendees other than the organizer can invite others (default: true).
out_of_office_properties
object
—
Input model for out-of-office properties.
guests_can_see_other_guests
boolean
true
Whether attendees can see who the event's attendees are (default: true).
working_location_properties
object
—
Input model for working location properties.
Google Calendar Quick Add
Google Calendar Quick AddIntegration name: GOOGLECALENDAR_QUICK_ADD
Parses natural language text to quickly create a basic Google Calendar event with its title, date, and time, suitable for simple scheduling; does not support direct attendee addition or recurring events, and calendar_id must be valid if not 'primary'.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
text
string
"Appointment at Somewhere on June 3rd 10am-10:25am"
Natural language input describing the event; Google Calendar parses this for event details like title, date, and time.
calendar_id
string
"primary"
Identifier of the calendar for the event. Use 'primary' for the main calendar, or provide a specific calendar ID (e.g., email address).
send_updates
string
—
Controls whether email notifications about the event creation are sent to attendees.
Google Calendar Remove Attendee
Google Calendar Remove AttendeeIntegration name: GOOGLECALENDAR_REMOVE_ATTENDEE
Removes an attendee from a specified event in a Google Calendar; the calendar and event must exist. Concurrent calls on the same event can overwrite attendee lists — apply changes sequentially per event.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
event_id
string
✅
—
Unique identifier of the event. For recurring events, target the master series ID or a specific instance ID; removing an attendee from one instance does not affect other instances in the series.
calendar_id
string
—
Identifier of the Google Calendar to which the event belongs; 'primary' signifies the user's main calendar.
attendee_email
string
✅
"john@gmail.com"
Email address of the attendee to remove. Must match an attendee email present on the event. If no match is found, the attendee was already removed or was never on the event.
Google Calendar Settings Get
Google Calendar Settings GetIntegration name: GOOGLECALENDAR_SETTINGS_GET
Tool to return a single user setting for the authenticated user. Use when you need to retrieve a specific calendar setting value.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
setting
string
✅
"timezone"
The identifier of the user setting to retrieve. Valid values include: autoAddHangouts, dateFieldOrder, defaultEventLength, format24HourTime, hideInvitations, hideWeekends, locale, remindOnRespondedEventsOnly, showDeclinedEvents, timezone, useKeyboardShortcuts, weekStart
Google Calendar Settings List
Google Calendar Settings ListIntegration name: GOOGLECALENDAR_SETTINGS_LIST
Returns all user settings for the authenticated user. Results include multiple settings keyed by id (e.g., timeZone); locate a specific setting by its id field. timeZone values are IANA identifiers (e.g., America/New_York) — use directly in datetime and event logic; align with timeZone from GOOGLECALENDAR_GET_CALENDAR for consistent notification times.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
pageToken
string
—
Token specifying which result page to return.
syncToken
string
—
Token obtained from the nextSyncToken field returned on the last page of results from the previous list request. It makes the result of this list request contain only entries that have changed since then. If the syncToken expires, the server will respond with a 410 GONE response code and the client should clear its storage and perform a full synchronization without any syncToken.
maxResults
integer
—
Maximum number of entries returned on one result page. By default the value is 100 entries. The page size can never be larger than 250 entries.
Google Calendar Settings Watch
Google Calendar Settings WatchIntegration name: GOOGLECALENDAR_SETTINGS_WATCH
Watch for changes to Settings resources.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
id
string
✅
"channel-ID-1"
A UUID or similar unique string that identifies this channel.
type
string
✅
"web_hook"
The type of delivery mechanism used for this channel. Must be "web_hook".
token
string
"token-string"
An arbitrary string delivered to the target address with each notification delivered over this channel.
params
object
—
Additional parameters controlling delivery channel behavior.
address
string
✅
"https://example.com/notifications"
The address where notifications are delivered for this channel.
expiration
integer
1426325213000
Unix timestamp in milliseconds specifying when the API should stop sending notifications for this channel.
Google Calendar Sync Events
Google Calendar Sync EventsIntegration name: GOOGLECALENDAR_SYNC_EVENTS
DEPRECATED: Use GOOGLECALENDAR_EVENTS_LIST instead. EventsList already handles syncToken with automatic param stripping. Synchronizes Google Calendar events, performing a full sync if no sync_token is provided or if a 410 GONE error (due to an expired token) necessitates it, otherwise performs an incremental sync for events changed since the sync_token was issued.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
pageToken
string
"RANDOM_PAGE_TOKEN_STRING"
Token for paginating results, from a previous response's nextPageToken. Repeat with each returned nextPageToken until no nextPageToken is returned; stopping early silently omits remaining events.
sync_token
string
"RANDOM_SYNC_TOKEN_STRING_FROM_PREVIOUS_CALL"
Token for incremental sync, retrieving only changes since issued. A 410 GONE response indicates an expired token, requiring a full sync. Cannot be combined with timeMin, timeMax, orderBy, query, or updatedMin; mixing these causes the request to fail.
calendar_id
string
"primary"
Google Calendar identifier; 'primary' refers to the authenticated user's main calendar.
event_types
array
"['default', 'focusTime']"
Filters events by specified types (e.g., 'default', 'focusTime', 'outOfOffice', 'workingLocation'). All types returned if omitted.
max_results
integer
"100"
Max events per page (max 2500); Google Calendar's default is used if unspecified.
single_events
boolean
true
If True, expands recurring events into individual instances (excluding master event); otherwise, Google's default handling applies.
Google Calendar Update Event
Google Calendar Update EventIntegration name: GOOGLECALENDAR_UPDATE_EVENT
Updates an existing event in Google Calendar. REQUIRES event_id - you MUST first search for the event using GOOGLECALENDAR_FIND_EVENT or GOOGLECALENDAR_EVENTS_LIST to obtain the event_id. This is a full PUT replacement: omitted fields (including attendees, reminders, recurrence, conferencing) are cleared. Always provide the complete desired event state. Use GOOGLECALENDAR_PATCH_EVENT instead for partial edits.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
summary
string
—
Summary (title) of the event.
event_id
string
✅
"a1b2c3d4e5f6g7h8i9j0k1l2m3"
REQUIRED. The unique identifier of the event to update. This parameter is MANDATORY - events cannot be updated by title, date, or other criteria. You MUST first retrieve the event_id by using GOOGLECALENDAR_FIND_EVENT or GOOGLECALENDAR_EVENTS_LIST to search for the event, then use the returned 'id' field here.
location
string
—
Geographic location of the event as free-form text.
timezone
string
—
IANA timezone name from the timezone database (e.g., 'America/New_York', 'Europe/London', 'Asia/Jerusalem', 'UTC'). Required if datetime is naive. For recurring events, start and end must include a timeZone. If not provided, UTC is used. If datetime includes timezone info (Z or offset), this field is optional and defaults to UTC. IMPORTANT: Must be a valid IANA timezone identifier. Values like 'EST', 'PST', 'ISRAEL TIME', or other abbreviations are NOT valid IANA timezone names.
attendees
array
—
List of attendees. Each attendee can be either: (1) A string email address (e.g., 'user@example.com'), or (2) An object with 'email' (required), 'optional' (boolean, default false), 'displayName' (string), 'comment' (string), 'additionalGuests' (integer), and 'resource' (boolean). To mark an attendee as optional (not required), use object format: {'email': 'user@example.com', 'optional': true}. IMPORTANT: Only valid email addresses are accepted. Plain names cannot be used.
eventType
string
—
Type of the event, immutable post-creation. 'workingLocation' (REQUIRES Google Workspace Enterprise). Note: 'fromGmail' events cannot be created via API.
recurrence
array
—
List of RRULE, EXRULE, RDATE, EXDATE lines for recurring events. Supported frequencies: DAILY, WEEKLY, MONTHLY, YEARLY. For recurring events, start.timeZone and end.timeZone must be present. UNTIL values follow RFC 5545: date-only (YYYYMMDD) for all-day events, or UTC datetime with Z suffix (YYYYMMDDTHHMMSSZ) for timed events. UNTIL values with time but missing Z suffix are auto-corrected. Provide an empty list to remove recurrence so the event becomes non-recurring.
visibility
string
—
Event visibility: 'default', 'public', 'private', or 'confidential'.
calendar_id
string
"primary"
Identifier of the Google Calendar where the event resides. The value 'primary' targets the user's primary calendar.
description
string
—
Description of the event. Can contain HTML. Optional. Must be omitted for 'birthday' event type.
end_datetime
string
—
Event end time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS. When provided, this parameter takes precedence over event_duration_hour and event_duration_minutes. If not provided, the end time is calculated using start_datetime + duration. Must be after start_datetime. Fractional seconds and timezone info will be automatically stripped if provided. Examples: '2025-01-16T14:30:00', '2025-01-16T14:30'.
send_updates
string
—
Options for who should receive notifications about event changes.
transparency
string
—
'opaque' (busy) or 'transparent' (available).
start_datetime
string
✅
—
REQUIRED. Event start time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS. IMPORTANT: Natural language expressions like 'tomorrow', 'next Monday', '2pm tomorrow' are NOT supported and will be rejected. You must provide the exact date and time in ISO format. Fractional seconds (e.g., .000) and timezone info (Z, +, -) will be automatically stripped if provided. Examples: '2025-01-16T13:00:00', '2025-01-16T13:00'.
guestsCanModify
boolean
—
If True, guests can modify the event.
birthdayProperties
object
—
Properties for birthday events.
create_meeting_room
boolean
—
Defaults to True. When True, for CREATE operations creates a Google Meet link; for UPDATE operations preserves existing conference data if present, or adds a new Meet link if none exists. Google Workspace accounts will successfully receive a Meet link. Personal Gmail accounts and other unsupported accounts will gracefully fallback to creating an event without a Meet link when conference creation fails. Set to False to skip Meet link operations (won't create new or modify existing conference data). The fallback ensures event creation succeeds even when conference features are unavailable due to account limitations.
event_duration_hour
integer
—
Number of hours for the event duration. Supports multi-day events (e.g., 240 hours = 10 days). For durations under 1 hour, use event_duration_minutes instead. Ignored if end_datetime is provided.
extended_properties
object
—
Extended properties of the event for storing custom metadata. Contains 'private' (visible only on this calendar) and/or 'shared' (visible to all attendees) dictionaries mapping string keys to string values. Example: {'private': {'key1': 'value1'}, 'shared': {'key2': 'value2'}}
focusTimeProperties
object
—
Properties for focusTime events. REQUIRES Google Workspace Enterprise account with Focus Time feature enabled.
guestsCanInviteOthers
boolean
—
Whether attendees other than the organizer can invite others to the event.
outOfOfficeProperties
object
—
Properties for outOfOffice events.
event_duration_minutes
integer
—
Duration in minutes (0-59 ONLY). NEVER use 60+ minutes - use event_duration_hour=1 instead. Maximum value is 59. Combined duration (hours + minutes) must be greater than 0. Ignored if end_datetime is provided.
guestsCanSeeOtherGuests
boolean
—
Whether attendees other than the organizer can see who the event's attendees are.
workingLocationProperties
object
—
Properties for workingLocation events. REQUIRES Google Workspace Enterprise. Constraints discovered from testing: - Must set transparency='transparent' and visibility='public' - Description must be omitted - Depending on 'type', include one of 'homeOffice', 'officeLocation', or 'customLocation'