Run a valid google-calendar.create_event call through the same SDK surface used by every toolkit.

Minimal tool call

ts
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

ToolPurposeExecutionEffectVersion
google-calendar.create_eventCreate a calendar event with attendees and optional recurrence. This sends or exposes an external invitation where supported.sync or asyncmutation1.0.0
google-calendar.delete_eventDelete or cancel an event. This is destructive and can notify or affect external attendees.sync or asyncdestructive mutation1.0.0
google-calendar.find_available_timesCompute free intervals shared across selected calendars from provider free/busy data.sync or asyncread1.0.0
google-calendar.get_eventRetrieve one event and its attendance state.sync or asyncread1.0.0
google-calendar.list_calendarsList calendars visible to the connected account.sync or asyncread1.0.0
google-calendar.list_eventsList events on one calendar, optionally restricted to an overlapping time range.sync or asyncread1.0.0
google-calendar.respond_to_eventAccept, tentatively accept, or decline an event invitation for one attendee.sync or asyncmutation1.0.0
google-calendar.update_eventUpdate an existing event, attendee list, recurrence, or status. Repeating the same values has no additional effect.sync or asyncmutation1.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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

JSON
{
  "$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

PropertyValue
Auth classoauth2
Required scopesNone
Optional scopesNone
Credential fieldsNone

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

Bash
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_provider extensions are rejected.

Versions

ContractVersion
Runtime catalog1.1
Manifest catalog1.0
Manifest schema1.0
Sourceactivepieces-bridge
TierP0
Capabilitiescalendar_scheduling

Next

Use Testing with mocks to exercise this toolkit before connecting a live provider account.