Google Calendar
Canonical tools, triggers, auth, schemas, and mock behavior for Google Calendar.
Run a valid google-calendar.create_event call through the same SDK surface used by every toolkit.
Minimal tool call
import { Eyeball } from "@eyeball/sdk";
const eyeball = new Eyeball({
apiKey: process.env.EYEBALL_API_KEY!,
baseUrl: process.env.EYEBALL_EXECUTOR_URL!,
});
const output = await eyeball.tools.run(
"google-calendar.create_event",
{
"calendarId": "example_calendarId",
"title": "example_title",
"startTime": "2026-07-17T12:00:00.000Z",
"endTime": "2026-07-17T12:00:00.000Z"
},
{ userId: "demo_user",
idempotencyKey: "docs:google-calendar.create_event:demo-1" },
);
console.log(output);The model receives canonical output. Your application retains the execution envelope through tools.execute or the execution APIs when it needs IDs, status, versions, and latency.
Supported canonical tools
| Tool | Purpose | Execution | Effect | Version |
|---|---|---|---|---|
google-calendar.create_event | Create a calendar event with attendees and optional recurrence. This sends or exposes an external invitation where supported. | sync or async | mutation | 1.0.0 |
google-calendar.delete_event | Delete or cancel an event. This is destructive and can notify or affect external attendees. | sync or async | destructive mutation | 1.0.0 |
google-calendar.find_available_times | Compute free intervals shared across selected calendars from provider free/busy data. | sync or async | read | 1.0.0 |
google-calendar.get_event | Retrieve one event and its attendance state. | sync or async | read | 1.0.0 |
google-calendar.list_calendars | List calendars visible to the connected account. | sync or async | read | 1.0.0 |
google-calendar.list_events | List events on one calendar, optionally restricted to an overlapping time range. | sync or async | read | 1.0.0 |
google-calendar.respond_to_event | Accept, tentatively accept, or decline an event invitation for one attendee. | sync or async | mutation | 1.0.0 |
google-calendar.update_event | Update an existing event, attendee list, recurrence, or status. Repeating the same values has no additional effect. | sync or async | mutation | 1.0.0 |
Only the rows above are implemented. A capability tool omitted by this manifest returns not_supported; eyeball never synthesizes provider parity.
Supported canonical triggers
This manifest does not implement a canonical trigger.
Input and output schemas
google-calendar.create_event
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:create_event:1.0.0:google-calendar",
"type": "object",
"description": "Calendar and new event fields.",
"additionalProperties": false,
"required": [
"calendarId",
"title",
"startTime",
"endTime"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Provider identifier of the calendar.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Event title.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Event description."
},
"location": {
"type": "string",
"description": "Event location."
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Event start timestamp."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Event end timestamp."
},
"timeZone": {
"type": "string",
"description": "IANA time-zone name for the event.",
"minLength": 1
},
"attendees": {
"type": "array",
"description": "Attendees to invite.",
"items": {
"type": "object",
"description": "An event attendee to invite.",
"additionalProperties": false,
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Attendee email address."
},
"displayName": {
"type": "string",
"description": "Attendee display name."
},
"optional": {
"type": "boolean",
"description": "Whether attendance is optional.",
"default": false
}
}
}
},
"recurrence": {
"type": "array",
"description": "Provider recurrence rules, such as RFC 5545 RRULE values.",
"items": {
"type": "string",
"minLength": 1
}
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:create_event:output:1.0.0:google-calendar",
"type": "object",
"description": "Newly created event.",
"additionalProperties": false,
"required": [
"event"
],
"properties": {
"event": {
"type": "object",
"description": "A normalized calendar event.",
"additionalProperties": false,
"required": [
"eventId",
"calendarId",
"title",
"startTime",
"endTime",
"status",
"attendees",
"recurrence",
"createdAt",
"updatedAt"
],
"properties": {
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
},
"calendarId": {
"type": "string",
"description": "Provider identifier of the containing calendar.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Event title.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Event description."
},
"location": {
"type": "string",
"description": "Event location."
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Event start timestamp."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Event end timestamp."
},
"timeZone": {
"type": "string",
"description": "IANA time zone attached to the event.",
"minLength": 1
},
"attendees": {
"type": "array",
"description": "Event attendees.",
"items": {
"type": "object",
"description": "Normalized event attendee and response state.",
"additionalProperties": false,
"required": [
"email",
"response",
"optional"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Attendee email address."
},
"displayName": {
"type": "string",
"description": "Attendee display name."
},
"response": {
"type": "string",
"enum": [
"needs_action",
"declined",
"tentative",
"accepted"
],
"description": "Current attendance response."
},
"optional": {
"type": "boolean",
"description": "Whether attendance is optional."
},
"organizer": {
"type": "boolean",
"description": "Whether this attendee is the organizer."
},
"self": {
"type": "boolean",
"description": "Whether this attendee represents the connected account."
}
}
}
},
"recurrence": {
"type": "array",
"description": "Provider recurrence rules.",
"items": {
"type": "string",
"minLength": 1
}
},
"status": {
"type": "string",
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"description": "Event status."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the event."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Event creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent event update timestamp."
}
}
}
}
}google-calendar.delete_event
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:delete_event:1.0.0:google-calendar",
"type": "object",
"description": "Calendar and event identifiers.",
"additionalProperties": false,
"required": [
"calendarId",
"eventId"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Provider identifier of the calendar.",
"minLength": 1
},
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:delete_event:output:1.0.0:google-calendar",
"type": "object",
"description": "Deletion acknowledgement.",
"additionalProperties": false,
"required": [
"eventId",
"deleted"
],
"properties": {
"eventId": {
"type": "string",
"description": "Provider identifier of the deleted event.",
"minLength": 1
},
"deleted": {
"type": "boolean",
"const": true,
"description": "Whether deletion completed."
}
}
}google-calendar.find_available_times
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:find_available_times:1.0.0:google-calendar",
"type": "object",
"description": "Calendars and search window.",
"additionalProperties": false,
"required": [
"calendarIds",
"startTime",
"endTime"
],
"properties": {
"calendarIds": {
"type": "array",
"minItems": 1,
"description": "Calendars that must all be free.",
"items": {
"type": "string",
"minLength": 1
}
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Search-window start."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Search-window end."
},
"durationMinutes": {
"type": "integer",
"minimum": 1,
"maximum": 1440,
"default": 30,
"description": "Minimum returned free interval duration."
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:find_available_times:output:1.0.0:google-calendar",
"type": "object",
"description": "Free intervals satisfying the requested duration.",
"additionalProperties": false,
"required": [
"availableTimes",
"busyTimes"
],
"properties": {
"availableTimes": {
"type": "array",
"description": "Free intervals shared across all calendars.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"startTime",
"endTime"
],
"properties": {
"startTime": {
"type": "string",
"format": "date-time",
"description": "Free interval start."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Free interval end."
}
}
}
},
"busyTimes": {
"type": "array",
"description": "Merged busy intervals used in the calculation.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"startTime",
"endTime"
],
"properties": {
"startTime": {
"type": "string",
"format": "date-time",
"description": "Busy interval start."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Busy interval end."
}
}
}
}
}
}google-calendar.get_event
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:get_event:1.0.0:google-calendar",
"type": "object",
"description": "Calendar and event identifiers.",
"additionalProperties": false,
"required": [
"calendarId",
"eventId"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Provider identifier of the calendar.",
"minLength": 1
},
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:get_event:output:1.0.0:google-calendar",
"type": "object",
"description": "Requested event.",
"additionalProperties": false,
"required": [
"event"
],
"properties": {
"event": {
"type": "object",
"description": "A normalized calendar event.",
"additionalProperties": false,
"required": [
"eventId",
"calendarId",
"title",
"startTime",
"endTime",
"status",
"attendees",
"recurrence",
"createdAt",
"updatedAt"
],
"properties": {
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
},
"calendarId": {
"type": "string",
"description": "Provider identifier of the containing calendar.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Event title.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Event description."
},
"location": {
"type": "string",
"description": "Event location."
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Event start timestamp."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Event end timestamp."
},
"timeZone": {
"type": "string",
"description": "IANA time zone attached to the event.",
"minLength": 1
},
"attendees": {
"type": "array",
"description": "Event attendees.",
"items": {
"type": "object",
"description": "Normalized event attendee and response state.",
"additionalProperties": false,
"required": [
"email",
"response",
"optional"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Attendee email address."
},
"displayName": {
"type": "string",
"description": "Attendee display name."
},
"response": {
"type": "string",
"enum": [
"needs_action",
"declined",
"tentative",
"accepted"
],
"description": "Current attendance response."
},
"optional": {
"type": "boolean",
"description": "Whether attendance is optional."
},
"organizer": {
"type": "boolean",
"description": "Whether this attendee is the organizer."
},
"self": {
"type": "boolean",
"description": "Whether this attendee represents the connected account."
}
}
}
},
"recurrence": {
"type": "array",
"description": "Provider recurrence rules.",
"items": {
"type": "string",
"minLength": 1
}
},
"status": {
"type": "string",
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"description": "Event status."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the event."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Event creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent event update timestamp."
}
}
}
}
}google-calendar.list_calendars
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:list_calendars:1.0.0:google-calendar",
"type": "object",
"description": "Calendar pagination selectors.",
"additionalProperties": false,
"properties": {
"pageSize": {
"type": "integer",
"description": "Maximum number of calendars to return in one page.",
"minimum": 1,
"maximum": 100,
"default": 50
},
"pageToken": {
"type": "string",
"description": "Opaque continuation token from a previous calendar page.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:list_calendars:output:1.0.0:google-calendar",
"type": "object",
"description": "One page of visible calendars.",
"additionalProperties": false,
"required": [
"calendars"
],
"properties": {
"calendars": {
"type": "array",
"description": "Visible calendars.",
"items": {
"type": "object",
"description": "A normalized calendar visible to the connected account.",
"additionalProperties": false,
"required": [
"calendarId",
"name",
"timeZone",
"accessRole",
"primary"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Provider identifier of the calendar.",
"minLength": 1
},
"name": {
"type": "string",
"description": "Calendar display name.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Calendar description."
},
"timeZone": {
"type": "string",
"description": "IANA time-zone name.",
"minLength": 1
},
"accessRole": {
"type": "string",
"enum": [
"owner",
"writer",
"reader",
"free_busy_reader"
],
"description": "Connected account access role."
},
"primary": {
"type": "boolean",
"description": "Whether this is the account's primary calendar."
}
}
}
},
"nextPageToken": {
"type": "string",
"description": "Opaque token to request the next page of calendars; absent when the result is complete.",
"minLength": 1
}
}
}google-calendar.list_events
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:list_events:1.0.0:google-calendar",
"type": "object",
"description": "Calendar, time range, and pagination selectors.",
"additionalProperties": false,
"required": [
"calendarId"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Provider identifier of the calendar.",
"minLength": 1
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Earliest overlapping event time."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Latest overlapping event time."
},
"includeCancelled": {
"type": "boolean",
"default": false,
"description": "Whether cancelled events are included."
},
"pageSize": {
"type": "integer",
"description": "Maximum number of events to return in one page.",
"minimum": 1,
"maximum": 100,
"default": 50
},
"pageToken": {
"type": "string",
"description": "Opaque continuation token from a previous event page.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:list_events:output:1.0.0:google-calendar",
"type": "object",
"description": "One page of events.",
"additionalProperties": false,
"required": [
"events"
],
"properties": {
"events": {
"type": "array",
"description": "Calendar events.",
"items": {
"type": "object",
"description": "A normalized calendar event.",
"additionalProperties": false,
"required": [
"eventId",
"calendarId",
"title",
"startTime",
"endTime",
"status",
"attendees",
"recurrence",
"createdAt",
"updatedAt"
],
"properties": {
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
},
"calendarId": {
"type": "string",
"description": "Provider identifier of the containing calendar.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Event title.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Event description."
},
"location": {
"type": "string",
"description": "Event location."
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Event start timestamp."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Event end timestamp."
},
"timeZone": {
"type": "string",
"description": "IANA time zone attached to the event.",
"minLength": 1
},
"attendees": {
"type": "array",
"description": "Event attendees.",
"items": {
"type": "object",
"description": "Normalized event attendee and response state.",
"additionalProperties": false,
"required": [
"email",
"response",
"optional"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Attendee email address."
},
"displayName": {
"type": "string",
"description": "Attendee display name."
},
"response": {
"type": "string",
"enum": [
"needs_action",
"declined",
"tentative",
"accepted"
],
"description": "Current attendance response."
},
"optional": {
"type": "boolean",
"description": "Whether attendance is optional."
},
"organizer": {
"type": "boolean",
"description": "Whether this attendee is the organizer."
},
"self": {
"type": "boolean",
"description": "Whether this attendee represents the connected account."
}
}
}
},
"recurrence": {
"type": "array",
"description": "Provider recurrence rules.",
"items": {
"type": "string",
"minLength": 1
}
},
"status": {
"type": "string",
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"description": "Event status."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the event."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Event creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent event update timestamp."
}
}
}
},
"nextPageToken": {
"type": "string",
"description": "Opaque token to request the next page of events; absent when the result is complete.",
"minLength": 1
}
}
}google-calendar.respond_to_event
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:respond_to_event:1.0.0:google-calendar",
"type": "object",
"description": "Event, attendee, and response.",
"additionalProperties": false,
"required": [
"calendarId",
"eventId",
"attendeeEmail",
"response"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Provider identifier of the calendar.",
"minLength": 1
},
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
},
"attendeeEmail": {
"type": "string",
"format": "email",
"description": "Attendee email whose response changes."
},
"response": {
"type": "string",
"enum": [
"accepted",
"tentative",
"declined"
],
"description": "New attendance response."
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:respond_to_event:output:1.0.0:google-calendar",
"type": "object",
"description": "Updated event and attendance state.",
"additionalProperties": false,
"required": [
"event"
],
"properties": {
"event": {
"type": "object",
"description": "A normalized calendar event.",
"additionalProperties": false,
"required": [
"eventId",
"calendarId",
"title",
"startTime",
"endTime",
"status",
"attendees",
"recurrence",
"createdAt",
"updatedAt"
],
"properties": {
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
},
"calendarId": {
"type": "string",
"description": "Provider identifier of the containing calendar.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Event title.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Event description."
},
"location": {
"type": "string",
"description": "Event location."
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Event start timestamp."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Event end timestamp."
},
"timeZone": {
"type": "string",
"description": "IANA time zone attached to the event.",
"minLength": 1
},
"attendees": {
"type": "array",
"description": "Event attendees.",
"items": {
"type": "object",
"description": "Normalized event attendee and response state.",
"additionalProperties": false,
"required": [
"email",
"response",
"optional"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Attendee email address."
},
"displayName": {
"type": "string",
"description": "Attendee display name."
},
"response": {
"type": "string",
"enum": [
"needs_action",
"declined",
"tentative",
"accepted"
],
"description": "Current attendance response."
},
"optional": {
"type": "boolean",
"description": "Whether attendance is optional."
},
"organizer": {
"type": "boolean",
"description": "Whether this attendee is the organizer."
},
"self": {
"type": "boolean",
"description": "Whether this attendee represents the connected account."
}
}
}
},
"recurrence": {
"type": "array",
"description": "Provider recurrence rules.",
"items": {
"type": "string",
"minLength": 1
}
},
"status": {
"type": "string",
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"description": "Event status."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the event."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Event creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent event update timestamp."
}
}
}
}
}google-calendar.update_event
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:update_event:1.0.0:google-calendar",
"type": "object",
"description": "Event identifiers and fields to update.",
"additionalProperties": false,
"required": [
"calendarId",
"eventId"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Provider identifier of the calendar.",
"minLength": 1
},
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Event title.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Event description."
},
"location": {
"type": "string",
"description": "Event location."
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Event start timestamp."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Event end timestamp."
},
"timeZone": {
"type": "string",
"description": "IANA time-zone name for the event.",
"minLength": 1
},
"attendees": {
"type": "array",
"description": "Attendees to invite.",
"items": {
"type": "object",
"description": "An event attendee to invite.",
"additionalProperties": false,
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Attendee email address."
},
"displayName": {
"type": "string",
"description": "Attendee display name."
},
"optional": {
"type": "boolean",
"description": "Whether attendance is optional.",
"default": false
}
}
}
},
"recurrence": {
"type": "array",
"description": "Provider recurrence rules, such as RFC 5545 RRULE values.",
"items": {
"type": "string",
"minLength": 1
}
},
"status": {
"type": "string",
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"description": "Replacement event status."
}
},
"minProperties": 3
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:calendar_scheduling:update_event:output:1.0.0:google-calendar",
"type": "object",
"description": "Updated event.",
"additionalProperties": false,
"required": [
"event"
],
"properties": {
"event": {
"type": "object",
"description": "A normalized calendar event.",
"additionalProperties": false,
"required": [
"eventId",
"calendarId",
"title",
"startTime",
"endTime",
"status",
"attendees",
"recurrence",
"createdAt",
"updatedAt"
],
"properties": {
"eventId": {
"type": "string",
"description": "Provider identifier of the event.",
"minLength": 1
},
"calendarId": {
"type": "string",
"description": "Provider identifier of the containing calendar.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Event title.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Event description."
},
"location": {
"type": "string",
"description": "Event location."
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "Event start timestamp."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "Event end timestamp."
},
"timeZone": {
"type": "string",
"description": "IANA time zone attached to the event.",
"minLength": 1
},
"attendees": {
"type": "array",
"description": "Event attendees.",
"items": {
"type": "object",
"description": "Normalized event attendee and response state.",
"additionalProperties": false,
"required": [
"email",
"response",
"optional"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Attendee email address."
},
"displayName": {
"type": "string",
"description": "Attendee display name."
},
"response": {
"type": "string",
"enum": [
"needs_action",
"declined",
"tentative",
"accepted"
],
"description": "Current attendance response."
},
"optional": {
"type": "boolean",
"description": "Whether attendance is optional."
},
"organizer": {
"type": "boolean",
"description": "Whether this attendee is the organizer."
},
"self": {
"type": "boolean",
"description": "Whether this attendee represents the connected account."
}
}
}
},
"recurrence": {
"type": "array",
"description": "Provider recurrence rules.",
"items": {
"type": "string",
"minLength": 1
}
},
"status": {
"type": "string",
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"description": "Event status."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the event."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Event creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent event update timestamp."
}
}
}
}
}Authentication
| Property | Value |
|---|---|
| Auth class | oauth2 |
| Required scopes | None |
| Optional scopes | None |
| Credential fields | None |
Credentials are resolved inside the executor by CredentialProvider. They never belong in tool input, x_provider, model context, logs, or execution output.
Provider-specific extensions
This manifest declares no provider-specific schema extensions. Use only canonical fields.
Provider differences may appear only under x_provider.google-calendar and only when the schema above declares them.
Sync and async behavior
All tools are synchronous by nature, but callers may choose mode: "async" to queue them.
Mutations require a stable Idempotency-Key. The TypeScript SDK accepts it as idempotencyKey; it is never part of the JSON request body.
REST example
curl "$EYEBALL_EXECUTOR_URL/v1/execute" \
-H "Authorization: Bearer $EYEBALL_API_KEY" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: docs:google-calendar.create_event:demo-1' \
--data '{"tool":"google-calendar.create_event","userId":"demo_user","input":{"calendarId":"example_calendarId","title":"example_title","startTime":"2026-07-17T12:00:00.000Z","endTime":"2026-07-17T12:00:00.000Z"},"mode":"sync"}'Mock support
Point EYEBALL_EXECUTOR_URL at a mock-configured executor to run through the real catalog, validation, credential seam, adapter, normalized errors, and execution records with no Google Calendar account. Mock selection changes the executor endpoint and trusted provider base-URL configuration, never the execute request.
Limitations
- This page describes the manifest's explicit P0 subset, not every operation offered by the provider.
- Provider account policy, consent UI, quota details, and current wire compatibility still require a real-provider certification pass.
- Fields outside the canonical schemas and declared
x_providerextensions are rejected.
Versions
| Contract | Version |
|---|---|
| Runtime catalog | 1.1 |
| Manifest catalog | 1.0 |
| Manifest schema | 1.0 |
| Source | activepieces-bridge |
| Tier | P0 |
| Capabilities | calendar_scheduling |
Next
Use Testing with mocks to exercise this toolkit before connecting a live provider account.