Automate Cal.com tasks via Rube MCP (Composio): manage bookings, check availability, configure webhooks, and handle teams. Always search tools first for current schemas.
Add this skill
npx mdskills install sickn33/cal-com-automationComprehensive Cal.com automation skill with clear workflows, tool sequences, and practical pitfall guidance
1---2name: cal-com-automation3description: "Automate Cal.com tasks via Rube MCP (Composio): manage bookings, check availability, configure webhooks, and handle teams. Always search tools first for current schemas."4requires:5 mcp: [rube]6---78# Cal.com Automation via Rube MCP910Automate Cal.com scheduling operations through Composio's Cal toolkit via Rube MCP.1112## Prerequisites1314- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)15- Active Cal.com connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `cal`16- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas1718## Setup1920**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.2122231. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds242. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `cal`253. If connection is not ACTIVE, follow the returned auth link to complete Cal.com authentication264. Confirm connection status shows ACTIVE before running any workflows2728## Core Workflows2930### 1. Manage Bookings3132**When to use**: User wants to list, create, or review bookings3334**Tool sequence**:351. `CAL_FETCH_ALL_BOOKINGS` - List all bookings with filters [Required]362. `CAL_POST_NEW_BOOKING_REQUEST` - Create a new booking [Optional]3738**Key parameters for listing**:39- `status`: Filter by booking status ('upcoming', 'recurring', 'past', 'cancelled', 'unconfirmed')40- `afterStart`: Filter bookings after this date (ISO 8601)41- `beforeEnd`: Filter bookings before this date (ISO 8601)4243**Key parameters for creation**:44- `eventTypeId`: Event type ID for the booking45- `start`: Booking start time (ISO 8601)46- `end`: Booking end time (ISO 8601)47- `name`: Attendee name48- `email`: Attendee email49- `timeZone`: Attendee timezone (IANA format)50- `language`: Attendee language code51- `metadata`: Additional metadata object5253**Pitfalls**:54- Date filters use ISO 8601 format with timezone (e.g., '2024-01-15T09:00:00Z')55- `eventTypeId` must reference a valid, active event type56- Booking creation requires matching an available slot; check availability first57- Time zone must be a valid IANA timezone string (e.g., 'America/New_York')58- Status filter values are specific strings; invalid values return empty results5960### 2. Check Availability6162**When to use**: User wants to find free/busy times or available booking slots6364**Tool sequence**:651. `CAL_RETRIEVE_CALENDAR_BUSY_TIMES` - Get busy time blocks [Required]662. `CAL_GET_AVAILABLE_SLOTS_INFO` - Get specific available slots [Required]6768**Key parameters**:69- `dateFrom`: Start date for availability check (YYYY-MM-DD)70- `dateTo`: End date for availability check (YYYY-MM-DD)71- `eventTypeId`: Event type to check slots for72- `timeZone`: Timezone for the availability response73- `loggedInUsersTz`: Timezone of the requesting user7475**Pitfalls**:76- Busy times show when the user is NOT available77- Available slots are specific to an event type's duration and configuration78- Date range should be reasonable (not months in advance) to get accurate results79- Timezone affects how slots are displayed; always specify explicitly80- Availability reflects calendar integrations (Google Calendar, Outlook, etc.)8182### 3. Configure Webhooks8384**When to use**: User wants to set up or manage webhook notifications for booking events8586**Tool sequence**:871. `CAL_RETRIEVE_WEBHOOKS_LIST` - List existing webhooks [Required]882. `CAL_GET_WEBHOOK_BY_ID` - Get specific webhook details [Optional]893. `CAL_UPDATE_WEBHOOK_BY_ID` - Update webhook configuration [Optional]904. `CAL_DELETE_WEBHOOK_BY_ID` - Remove a webhook [Optional]9192**Key parameters**:93- `id`: Webhook ID for GET/UPDATE/DELETE operations94- `subscriberUrl`: Webhook endpoint URL95- `eventTriggers`: Array of event types to trigger on96- `active`: Whether the webhook is active97- `secret`: Webhook signing secret9899**Pitfalls**:100- Webhook URLs must be publicly accessible HTTPS endpoints101- Event triggers include: 'BOOKING_CREATED', 'BOOKING_RESCHEDULED', 'BOOKING_CANCELLED', etc.102- Inactive webhooks do not fire; toggle `active` to enable/disable103- Webhook secrets are used for payload signature verification104105### 4. Manage Teams106107**When to use**: User wants to create, view, or manage teams and team event types108109**Tool sequence**:1101. `CAL_GET_TEAMS_LIST` - List all teams [Required]1112. `CAL_GET_TEAM_INFORMATION_BY_TEAM_ID` - Get specific team details [Optional]1123. `CAL_CREATE_TEAM_IN_ORGANIZATION` - Create a new team [Optional]1134. `CAL_RETRIEVE_TEAM_EVENT_TYPES` - List event types for a team [Optional]114115**Key parameters**:116- `teamId`: Team identifier117- `name`: Team name (for creation)118- `slug`: URL-friendly team identifier119120**Pitfalls**:121- Team creation may require organization-level permissions122- Team event types are separate from personal event types123- Team slugs must be URL-safe and unique within the organization124125### 5. Organization Management126127**When to use**: User wants to view organization details128129**Tool sequence**:1301. `CAL_GET_ORGANIZATION_ID` - Get the organization ID [Required]131132**Key parameters**: (none required)133134**Pitfalls**:135- Organization ID is needed for team creation and org-level operations136- Not all Cal.com accounts have organizations; personal plans may return errors137138## Common Patterns139140### Booking Creation Flow141142```1431. Call CAL_GET_AVAILABLE_SLOTS_INFO to find open slots1442. Present available times to the user1453. Call CAL_POST_NEW_BOOKING_REQUEST with selected slot1464. Confirm booking creation response147```148149### ID Resolution150151**Team name -> Team ID**:152```1531. Call CAL_GET_TEAMS_LIST1542. Find team by name in response1553. Extract id field156```157158### Webhook Setup159160```1611. Call CAL_RETRIEVE_WEBHOOKS_LIST to check existing hooks1622. Create or update webhook with desired triggers1633. Verify webhook fires on test booking164```165166## Known Pitfalls167168**Date/Time Formats**:169- Booking times: ISO 8601 with timezone (e.g., '2024-01-15T09:00:00Z')170- Availability dates: YYYY-MM-DD format171- Always specify timezone explicitly to avoid confusion172173**Event Types**:174- Event type IDs are numeric integers175- Event types define duration, location, and booking rules176- Disabled event types cannot accept new bookings177178**Permissions**:179- Team operations require team membership or admin access180- Organization operations require org-level permissions181- Webhook management requires appropriate access level182183**Rate Limits**:184- Cal.com API has rate limits per API key185- Implement backoff on 429 responses186187## Quick Reference188189| Task | Tool Slug | Key Params |190|------|-----------|------------|191| List bookings | CAL_FETCH_ALL_BOOKINGS | status, afterStart, beforeEnd |192| Create booking | CAL_POST_NEW_BOOKING_REQUEST | eventTypeId, start, end, name, email |193| Get busy times | CAL_RETRIEVE_CALENDAR_BUSY_TIMES | dateFrom, dateTo |194| Get available slots | CAL_GET_AVAILABLE_SLOTS_INFO | eventTypeId, dateFrom, dateTo |195| List webhooks | CAL_RETRIEVE_WEBHOOKS_LIST | (none) |196| Get webhook | CAL_GET_WEBHOOK_BY_ID | id |197| Update webhook | CAL_UPDATE_WEBHOOK_BY_ID | id, subscriberUrl, eventTriggers |198| Delete webhook | CAL_DELETE_WEBHOOK_BY_ID | id |199| List teams | CAL_GET_TEAMS_LIST | (none) |200| Get team | CAL_GET_TEAM_INFORMATION_BY_TEAM_ID | teamId |201| Create team | CAL_CREATE_TEAM_IN_ORGANIZATION | name, slug |202| Team event types | CAL_RETRIEVE_TEAM_EVENT_TYPES | teamId |203| Get org ID | CAL_GET_ORGANIZATION_ID | (none) |204
Full transparency — inspect the skill content before installing.