--- name: gws-calendar description: View, create, update, and delete Google Calendar events across all connected accounts. Find free time for meetings. command: /gws-calendar verified: true --- # Google Calendar Skill ## Overview This skill guides you in using the `google_calendar` MCP tool to manage calendar events across all connected Google accounts. ## Available Subcommands | Subcommand | Description | | ------------------ | ------------------------------------------------------------ | | `list` | List upcoming events (defaults to next 7 days). | | `get ` | Get details of a specific event. | | `create` | Create a new calendar event. | | `update ` | Update an existing event. | | `delete ` | Delete an event. | | `rsvp ` | Accept, decline, or tentatively accept an event. | | `free-time` | Find available meeting slots across all connected calendars. | ## Account Routing - **Reads** (list, get, free-time): Omit `account` to query **all** accounts simultaneously. - **Writes** (create, update, delete, rsvp): You **must** specify `account`. Ask the user if unclear. ``` google_calendar(command: "list") // all accounts google_calendar(command: "free-time --duration 60") // all accounts google_calendar(command: "create --title 'Team Sync'", account: "Work") ``` ## Key Flags | Flag | Description | | ---------------------- | ---------------------------------------------------- | | `--start ` | Start time in ISO 8601 format | | `--end ` | End time in ISO 8601 format | | `--days ` | Number of days to look ahead (list only, default: 7) | | `--title ` | Event title | | `--description ` | Event description | | `--location ` | Event location | | `--attendees ` | Comma-separated attendee emails | | `--duration ` | Required slot duration in minutes (free-time only) | | `--response ` | RSVP response: accepted / declined / tentative | ## Workflow: Scheduling a Meeting 1. Find free time: `google_calendar(command: "free-time --duration 60 --days 5")` 2. Confirm a slot with the user. 3. Create the event: `google_calendar(command: "create --title 'Meeting' --start '2026-04-15T14:00:00' --end '2026-04-15T15:00:00' --attendees 'alice@example.com'", account: "Work")` ## Free-Time Algorithm `free-time` fetches events from **all** connected accounts, merges overlapping busy intervals, and returns up to 10 available slots of at least the requested duration within the search window. ## Error Handling - If no accounts are connected, direct user to Settings → Integrations. - If `account` is required but not specified, ask the user which account to use before proceeding.