Calendars
Let agents manage real calendars: create meetings with attendees and video links, look up availability windows, reschedule, and cancel — on Google Calendar or Outlook Calendar.
The Google tool types require a Google Calendar connector; the Outlook tool types require an Outlook Calendar connector. Both are OAuth connections to the account whose calendars the agent should manage — see Connectors. Both families share the same conventions for dates and times: dates are yyyy-MM-dd, times are 24-hour HH:mm, and timeZone is an IANA identifier like America/New_York (when omitted, the connector's default time zone is used).
Both providers also share one recurrence model. The recurrence field on the create and update tools takes a RecurrenceRule object:
{
"frequency": "WEEKLY",
"interval": 2,
"byDay": ["MO", "WE", "FR"],
"until": "2026-12-31",
"excludeDates": ["2026-11-26"]
}
frequency is DAILY, WEEKLY, MONTHLY, or YEARLY; interval spaces out occurrences (every 2 weeks, etc.); end the series with either count or until (mutually exclusive). byDay takes weekday codes (MO–SU, with position prefixes like 1MO or -1FR for monthly patterns), and byMonthDay, byMonth, and bySetPos cover day-of-month, month, and "first/last occurrence" patterns. For Google, the rule is converted to standard RRULE strings, and excludeDates/includeDates become EXDATE/RDATE entries; passing "frequency": "NONE" on an update clears recurrence. For Outlook, the same rule is converted to a Microsoft Graph recurrence pattern — excludeDates and includeDates are not supported there.
Google Calendar
Google tools can span multiple calendars on the connected account. Create and update return the event as a simplified object (eventId, name, description, start/end date and time fields, location, attendees, isBlocking, isOrganizer, and any recurrence), so agents never have to parse raw Google API payloads.
Create Event (Google) TOOLGOOGLE_CALENDAR_CREATE_EVENT
Creates an event on the given calendar — or, when calendarId is omitted, on the connector's first enabled calendar. Two conveniences default to on: unless addGoogleMeet is false a Google Meet conference is attached and its link comes back as meetUrl, and unless includeOrganizerAsAttendee is false the connected account is added as an attendee so the event blocks their availability. attendees is a list of email addresses (a single comma-separated string also works), and a recurrence rule makes the event repeat. The result returns the eventId and the simplified event object.
Example
{
"toolType": "GOOGLE_CALENDAR_CREATE_EVENT",
"connectorId": "V1StGXR8Z5",
"calendarId": "primary",
"summary": "@@{meetingTitle}",
"description": "@@{agenda}",
"startDate": "@@{meetingDate}",
"startTime": "14:00",
"endDate": "@@{meetingDate}",
"endTime": "14:30",
"timeZone": "America/New_York",
"attendees": ["@@{attendeeEmail}"],
"location": "Google Meet",
"addGoogleMeet": true
}
connectorId in the tool configuration.Configuration fields
- Name
connectorId- Type
- string (ID)
- Description
- Required string (ID) value. References a connector by ID.
- Name
calendarId- Type
- string
- Description
- Required string value.
- Name
summary- Type
- string
- Description
- Required string value.
- Name
description- Type
- string
- Description
- Required string value.
- Name
startDate- Type
- string
- Description
- Required string value.
- Name
startTime- Type
- string
- Description
- Required string value.
- Name
endDate- Type
- string
- Description
- Required string value.
- Name
endTime- Type
- string
- Description
- Required string value.
- Name
timeZone- Type
- string
- Description
- Required string value.
- Name
attendees- Type
- array<string>
- Description
- Required array<string> value.
- Name
location- Type
- string
- Description
- Required string value.
- Name
recurrence- Type
- object · optional
- Description
- Recurrence rule for creating recurring events (optional). See RecurrenceRule class for JSON structure and examples.
- Name
includeOrganizerAsAttendee- Type
- boolean
- Description
- When null or true, the organizer (connector account) is added to attendees as self.
- Name
addGoogleMeet- Type
- boolean
- Description
- When null or true, a Google Meet conference is created and its link returned.
List Events (Google) TOOLGOOGLE_CALENDAR_LIST_EVENTS
Lists events across one or more calendars at once — calendarIds is a list, and results from every calendar are merged into a single events array ordered by start time, with totalEventCount and the responseTimeZone used for formatting. Narrow the window with the start/end date and time fields, filter by free-text query, and cap results with maxResults. It doubles as a single-event lookup: set eventId (with exactly one calendar in calendarIds) to fetch just that event. This is the availability primitive — agents check a time window here before proposing or booking a slot.
Example
{
"toolType": "GOOGLE_CALENDAR_LIST_EVENTS",
"connectorId": "V1StGXR8Z5",
"calendarIds": ["primary"],
"startDate": "@@{windowStart}",
"startTime": "00:00",
"endDate": "@@{windowEnd}",
"endTime": "23:59",
"timeZone": "America/New_York",
"maxResults": 50
}
connectorId in the tool configuration.Configuration fields
- Name
connectorId- Type
- string (ID)
- Description
- Required string (ID) value. References a connector by ID.
- Name
calendarIds- Type
- array<string>
- Description
- Required array<string> value.
- Name
startDate- Type
- string
- Description
- Required string value.
- Name
startTime- Type
- string
- Description
- Required string value.
- Name
endDate- Type
- string
- Description
- Required string value.
- Name
endTime- Type
- string
- Description
- Required string value.
- Name
timeZone- Type
- string
- Description
- Required string value.
- Name
maxResults- Type
- integer
- Description
- Required integer value.
- Name
query- Type
- string
- Description
- Required string value.
- Name
eventId- Type
- string
- Description
- Required string value.
Update Event (Google) TOOLGOOGLE_CALENDAR_UPDATE_EVENT
Updates an existing event with patch semantics: the executor first fetches the current event, and any date, time, or attendee field left unset keeps its existing value — so an agent can move a meeting without restating the guest list. Supplying attendees replaces the list; a recurrence rule rewrites the series, and "frequency": "NONE" removes recurrence entirely. The result returns the eventId and the updated simplified event; an unknown eventId fails with EVENT_NOT_FOUND.
Example
{
"toolType": "GOOGLE_CALENDAR_UPDATE_EVENT",
"connectorId": "V1StGXR8Z5",
"calendarId": "primary",
"eventId": "@@{eventId}",
"startDate": "@@{newDate}",
"startTime": "@@{newStartTime}",
"endDate": "@@{newDate}",
"endTime": "@@{newEndTime}",
"timeZone": "America/New_York"
}
connectorId in the tool configuration.Configuration fields
- Name
connectorId- Type
- string (ID)
- Description
- Required string (ID) value. References a connector by ID.
- Name
calendarId- Type
- string
- Description
- Required string value.
- Name
eventId- Type
- string
- Description
- Required string value.
- Name
summary- Type
- string
- Description
- Required string value.
- Name
description- Type
- string
- Description
- Required string value.
- Name
startDate- Type
- string
- Description
- Required string value.
- Name
startTime- Type
- string
- Description
- Required string value.
- Name
endDate- Type
- string
- Description
- Required string value.
- Name
endTime- Type
- string
- Description
- Required string value.
- Name
timeZone- Type
- string
- Description
- Required string value.
- Name
attendees- Type
- array<string>
- Description
- Required array<string> value.
- Name
location- Type
- string
- Description
- Required string value.
- Name
recurrence- Type
- object · optional
- Description
- Recurrence rule for updating recurring events (optional). See RecurrenceRule class for JSON structure and examples.
Delete Event (Google) TOOLGOOGLE_CALENDAR_DELETE_EVENT
Deletes an event from the given calendar, cancelling it for all attendees. The result confirms the eventId and calendarId that were removed. Get the eventId from a prior List Events call — deleting a recurring event's series ID cancels the whole series.
Example
{
"toolType": "GOOGLE_CALENDAR_DELETE_EVENT",
"connectorId": "V1StGXR8Z5",
"calendarId": "primary",
"eventId": "@@{eventId}"
}
connectorId in the tool configuration.Configuration fields
- Name
connectorId- Type
- string (ID)
- Description
- Required string (ID) value. References a connector by ID.
- Name
calendarId- Type
- string
- Description
- Required string value.
- Name
eventId- Type
- string
- Description
- Required string value.
Outlook Calendar
Outlook tools operate on one calendar per call, defaulting to the connector's primary calendar when calendarId is omitted. Events come back in a simplified Graph shape (id, subject, bodyPreview, start/end with time zones, location, attendees, organizer, webLink), and event IDs are compact six-character short IDs valid for four hours — if an update or delete reports an expired ID, re-run List Events for fresh ones.
Create Event (Outlook) TOOLOUTLOOK_CALENDAR_CREATE_EVENT
Creates an event on the given calendar (or the account's default calendar when calendarId is omitted), inviting everyone in attendees. A recurrence rule is converted to Microsoft Graph's native recurrence pattern — daily through yearly, including relative patterns like "first Monday of each month" via byDay plus bySetPos — though excludeDates/includeDates are not supported on Outlook. There is no automatic video-conference option here, unlike the Google equivalent. The result returns the short eventId and the simplified event.
Example
{
"toolType": "OUTLOOK_CALENDAR_CREATE_EVENT",
"connectorId": "V1StGXR8Z5",
"subject": "@@{meetingTitle}",
"description": "@@{agenda}",
"startDate": "@@{meetingDate}",
"startTime": "14:00",
"endDate": "@@{meetingDate}",
"endTime": "14:30",
"timeZone": "America/New_York",
"attendees": ["@@{attendeeEmail}"],
"location": "Teams"
}
connectorId in the tool configuration.Configuration fields
- Name
connectorId- Type
- string (ID)
- Description
- Required string (ID) value. References a connector by ID.
- Name
calendarId- Type
- string
- Description
- Required string value.
- Name
subject- Type
- string
- Description
- Required string value.
- Name
description- Type
- string
- Description
- Required string value.
- Name
startDate- Type
- string
- Description
- Required string value.
- Name
startTime- Type
- string
- Description
- Required string value.
- Name
endDate- Type
- string
- Description
- Required string value.
- Name
endTime- Type
- string
- Description
- Required string value.
- Name
timeZone- Type
- string
- Description
- Required string value.
- Name
attendees- Type
- array<string>
- Description
- Required array<string> value.
- Name
location- Type
- string
- Description
- Required string value.
- Name
recurrence- Type
- object
- Description
- Required object value.
List Events (Outlook) TOOLOUTLOOK_CALENDAR_LIST_EVENTS
Lists events from one calendar within a date window, expanding recurring events into their individual occurrences (Graph calendar-view semantics). When no window is given it defaults to the next seven days starting today, which makes an unconfigured call a useful "what's coming up" check. Filter with free-text query and cap with maxResults; the result returns totalEventCount and the simplified events array with short event IDs for follow-up update or delete calls.
Example
{
"toolType": "OUTLOOK_CALENDAR_LIST_EVENTS",
"connectorId": "V1StGXR8Z5",
"startDate": "@@{windowStart}",
"endDate": "@@{windowEnd}",
"timeZone": "America/New_York",
"maxResults": 50
}
connectorId in the tool configuration.Configuration fields
- Name
connectorId- Type
- string (ID)
- Description
- Required string (ID) value. References a connector by ID.
- Name
calendarId- Type
- string
- Description
- Required string value.
- Name
startDate- Type
- string
- Description
- Required string value.
- Name
startTime- Type
- string
- Description
- Required string value.
- Name
endDate- Type
- string
- Description
- Required string value.
- Name
endTime- Type
- string
- Description
- Required string value.
- Name
timeZone- Type
- string
- Description
- Required string value.
- Name
maxResults- Type
- integer
- Description
- Graph `$top` page size, not a cap on the events returned: the client follows `@odata.nextLink` and returns the whole window, setting `truncated` if its page limit is reached.
- Name
query- Type
- string
- Description
- Graph `$top` page size, not a cap on the events returned: the client follows `@odata.nextLink` and returns the whole window, setting `truncated` if its page limit is reached.
Update Event (Outlook) TOOLOUTLOOK_CALENDAR_UPDATE_EVENT
Updates an existing event with patch semantics — only the fields you supply are changed, and start/end are only rewritten when both the date and time parts are present. eventId takes a short ID from a previous List Events call (expired short IDs fail with EVENT_ID_EXPIRED; re-list to refresh). A recurrence rule replaces the series pattern. The result returns a fresh short eventId and the updated simplified event.
Example
{
"toolType": "OUTLOOK_CALENDAR_UPDATE_EVENT",
"connectorId": "V1StGXR8Z5",
"eventId": "@@{eventId}",
"startDate": "@@{newDate}",
"startTime": "@@{newStartTime}",
"endDate": "@@{newDate}",
"endTime": "@@{newEndTime}",
"timeZone": "America/New_York"
}
connectorId in the tool configuration.Configuration fields
- Name
connectorId- Type
- string (ID)
- Description
- Required string (ID) value. References a connector by ID.
- Name
calendarId- Type
- string
- Description
- Required string value.
- Name
eventId- Type
- string
- Description
- Required string value.
- Name
subject- Type
- string
- Description
- Required string value.
- Name
description- Type
- string
- Description
- Required string value.
- Name
startDate- Type
- string
- Description
- Required string value.
- Name
startTime- Type
- string
- Description
- Required string value.
- Name
endDate- Type
- string
- Description
- Required string value.
- Name
endTime- Type
- string
- Description
- Required string value.
- Name
timeZone- Type
- string
- Description
- Required string value.
- Name
attendees- Type
- array<string>
- Description
- Required array<string> value.
- Name
location- Type
- string
- Description
- Required string value.
- Name
recurrence- Type
- object
- Description
- Required object value.
Delete Event (Outlook) TOOLOUTLOOK_CALENDAR_DELETE_EVENT
Deletes an event from the calendar, cancelling it for all attendees. eventId takes a short ID from a previous List Events call and fails with EVENT_ID_EXPIRED once the four-hour window has passed — re-list to get a fresh ID. The result confirms the eventId that was removed.
Example
{
"toolType": "OUTLOOK_CALENDAR_DELETE_EVENT",
"connectorId": "V1StGXR8Z5",
"eventId": "@@{eventId}"
}
connectorId in the tool configuration.Configuration fields
- Name
connectorId- Type
- string (ID)
- Description
- Required string (ID) value. References a connector by ID.
- Name
calendarId- Type
- string
- Description
- Required string value.
- Name
eventId- Type
- string
- Description
- Required string value.