Antigravity-awesome-skills google-calendar-automation
Automate Google Calendar events, scheduling, availability checks, and attendee management via Rube MCP (Composio). Create events, find free slots, manage attendees, and list calendars programmatica...
git clone https://github.com/benjaminasterA/antigravity-awesome-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/benjaminasterA/antigravity-awesome-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/google-calendar-automation" ~/.claude/skills/benjaminastera-antigravity-awesome-skills-google-calendar-automation && rm -rf "$T"
skills/google-calendar-automation/SKILL.mdGoogle Calendar Automation via Rube MCP
Automate Google Calendar workflows including event creation, scheduling, availability checks, attendee management, and calendar browsing through Composio's Google Calendar toolkit.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Google Calendar connection via
with toolkitRUBE_MANAGE_CONNECTIONSgooglecalendar - Always call
first to get current tool schemasRUBE_SEARCH_TOOLS
Setup
Get Rube MCP: Add
https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
respondsRUBE_SEARCH_TOOLS - Call
with toolkitRUBE_MANAGE_CONNECTIONSgooglecalendar - If connection is not ACTIVE, follow the returned auth link to complete Google OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Create and Manage Events
When to use: User wants to create, update, or delete calendar events
Tool sequence:
- Identify target calendar ID [Prerequisite]GOOGLECALENDAR_LIST_CALENDARS
- Get current time with proper timezone [Optional]GOOGLECALENDAR_GET_CURRENT_DATE_TIME
- Check availability before booking [Optional]GOOGLECALENDAR_FIND_FREE_SLOTS
- Create the event [Required]GOOGLECALENDAR_CREATE_EVENT
- Update specific fields of an existing event [Alternative]GOOGLECALENDAR_PATCH_EVENT
- Full replacement update of an event [Alternative]GOOGLECALENDAR_UPDATE_EVENT
- Delete an event [Optional]GOOGLECALENDAR_DELETE_EVENT
Key parameters:
: Use 'primary' for main calendar, or specific calendar IDcalendar_id
: ISO 8601 format 'YYYY-MM-DDTHH:MM:SS' (NOT natural language)start_datetime
: IANA timezone name (e.g., 'America/New_York', NOT 'EST' or 'PST')timezone
: Hours (0+)event_duration_hour
: Minutes (0-59 only; NEVER use 60+)event_duration_minutes
: Event titlesummary
: Array of email addresses (NOT names)attendees
: Free-form text for event locationlocation
Pitfalls:
must be ISO 8601; natural language like 'tomorrow' is rejectedstart_datetime
max is 59; useevent_duration_minutes
instead ofevent_duration_hour=1event_duration_minutes=60
must be IANA identifier; abbreviations like 'EST', 'PST' are NOT validtimezone
only accepts email addresses, not names; resolve names firstattendees- Google Meet link creation defaults to true; may fail on personal Gmail accounts (graceful fallback)
- Organizer is auto-added as attendee unless
exclude_organizer=true
2. List and Search Events
When to use: User wants to find or browse events on their calendar
Tool sequence:
- Get available calendars [Prerequisite]GOOGLECALENDAR_LIST_CALENDARS
- Search by title/keyword with time bounds [Required]GOOGLECALENDAR_FIND_EVENT
- List events in a time range [Alternative]GOOGLECALENDAR_EVENTS_LIST
- List instances of a recurring event [Optional]GOOGLECALENDAR_EVENTS_INSTANCES
Key parameters:
/query
: Free-text search (matches summary, description, location, attendees)q
: Lower bound (RFC3339 with timezone offset, e.g., '2024-01-01T00:00:00-08:00')timeMin
: Upper bound (RFC3339 with timezone offset)timeMax
: true to expand recurring events into instancessingleEvents
: 'startTime' (requires singleEvents=true) or 'updated'orderBy
: Results per page (max 2500)maxResults
Pitfalls:
- Timezone warning: UTC timestamps (ending in 'Z') don't align with local dates; use local timezone offsets instead
- Example: '2026-01-19T00:00:00Z' covers 2026-01-18 4pm to 2026-01-19 4pm in PST
- Omitting
/timeMin
scans the full calendar and can be slowtimeMax
in response means more results; paginate until absentpageToken
requiresorderBy='startTime'singleEvents=true
3. Manage Attendees and Invitations
When to use: User wants to add, remove, or update event attendees
Tool sequence:
orGOOGLECALENDAR_FIND_EVENT
- Find the event [Prerequisite]GOOGLECALENDAR_EVENTS_LIST
- Add attendees (replaces entire attendees list) [Required]GOOGLECALENDAR_PATCH_EVENT
- Remove a specific attendee by email [Required]GOOGLECALENDAR_REMOVE_ATTENDEE
Key parameters:
: Unique event identifier (opaque string, NOT the event title)event_id
: Full list of attendee emails (PATCH replaces entire list)attendees
: Email to removeattendee_email
: 'all', 'externalOnly', or 'none'send_updates
Pitfalls:
is a technical identifier, NOT the event title; always search first to get the IDevent_id
attendees field replaces the entire list; include existing attendees to avoid removing themPATCH_EVENT- Attendee names cannot be resolved; always use email addresses
- Use
to resolve names to emails before managing attendeesGMAIL_SEARCH_PEOPLE
4. Check Availability and Free/Busy Status
When to use: User wants to find available time slots or check busy periods
Tool sequence:
- Identify calendars to check [Prerequisite]GOOGLECALENDAR_LIST_CALENDARS
- Get current time with timezone [Optional]GOOGLECALENDAR_GET_CURRENT_DATE_TIME
- Find free intervals across calendars [Required]GOOGLECALENDAR_FIND_FREE_SLOTS
- Get raw busy periods for computing gaps [Fallback]GOOGLECALENDAR_FREE_BUSY_QUERY
- Book a confirmed slot [Required]GOOGLECALENDAR_CREATE_EVENT
Key parameters:
: List of calendar IDs to check (e.g., ['primary'])items
/time_min
: Query interval (defaults to current day if omitted)time_max
: IANA timezone for interpreting naive timestampstimezone
: Max calendars (1-50)calendarExpansionMax
: Max members per group (1-100)groupExpansionMax
Pitfalls:
- Maximum span ~90 days per Google Calendar freeBusy API limit
- Very long ranges or inaccessible calendars yield empty/invalid results
- Only calendars with at least freeBusyReader access are visible
- Free slots responses may normalize to UTC ('Z'); check offsets
requires RFC3339 timestamps with timezoneGOOGLECALENDAR_FREE_BUSY_QUERY
Common Patterns
ID Resolution
- Calendar name -> calendar_id:
to enumerate all calendarsGOOGLECALENDAR_LIST_CALENDARS - Event title -> event_id:
orGOOGLECALENDAR_FIND_EVENTGOOGLECALENDAR_EVENTS_LIST - Attendee name -> email:
GMAIL_SEARCH_PEOPLE
Timezone Handling
- Always use IANA timezone identifiers (e.g., 'America/Los_Angeles')
- Use
to get current time in user's timezoneGOOGLECALENDAR_GET_CURRENT_DATE_TIME - When querying events for a local date, use timestamps with local offset, NOT UTC
- Example: '2026-01-19T00:00:00-08:00' for PST, NOT '2026-01-19T00:00:00Z'
Pagination
returnsGOOGLECALENDAR_EVENTS_LIST
; iterate until absentnextPageToken
also paginates; useGOOGLECALENDAR_LIST_CALENDARSpage_token
Known Pitfalls
- Natural language dates: NOT supported; all dates must be ISO 8601 or RFC3339
- Timezone mismatch: UTC timestamps don't align with local dates for filtering
- Duration limits:
max 59; use hours for longer durationsevent_duration_minutes - IANA timezones only: 'EST', 'PST', etc. are NOT valid; use 'America/New_York'
- Event IDs are opaque: Always search to get event_id; never guess or construct
- Attendees as emails: Names cannot be used; resolve with GMAIL_SEARCH_PEOPLE
- PATCH replaces attendees: Include all desired attendees in the array, not just new ones
- Conference limitations: Google Meet may fail on personal accounts (graceful fallback)
- Rate limits: High-volume searches can trigger 403/429; throttle between calls
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List calendars | | |
| Create event | | , , |
| Update event | | , , fields to update |
| Delete event | | , |
| Search events | | , , |
| List events | | , , |
| Recurring instances | | , |
| Find free slots | | , , , |
| Free/busy query | | , , |
| Remove attendee | | , |
| Get current time | | |
| Get calendar | | |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.