Cal.com Automation via Rube MCP
Automate Cal.com scheduling operations through Composio's Cal toolkit via Rube MCP.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Cal.com connection via with toolkit
- Always call first to get current tool schemas
Setup
Get Rube MCP: Add
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 responds
- Call with toolkit
- If connection is not ACTIVE, follow the returned auth link to complete Cal.com authentication
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Manage Bookings
When to use: User wants to list, create, or review bookings
Tool sequence:
- - List all bookings with filters [Required]
CAL_POST_NEW_BOOKING_REQUEST
- Create a new booking [Optional]
Key parameters for listing:
- : Filter by booking status ('upcoming', 'recurring', 'past', 'cancelled', 'unconfirmed')
- : Filter bookings after this date (ISO 8601)
- : Filter bookings before this date (ISO 8601)
Key parameters for creation:
- : Event type ID for the booking
- : Booking start time (ISO 8601)
- : Booking end time (ISO 8601)
- : Attendee name
- : Attendee email
- : Attendee timezone (IANA format)
- : Attendee language code
- : Additional metadata object
Pitfalls:
- Date filters use ISO 8601 format with timezone (e.g., '2024-01-15T09:00:00Z')
- must reference a valid, active event type
- Booking creation requires matching an available slot; check availability first
- Time zone must be a valid IANA timezone string (e.g., 'America/New_York')
- Status filter values are specific strings; invalid values return empty results
2. Check Availability
When to use: User wants to find free/busy times or available booking slots
Tool sequence:
CAL_RETRIEVE_CALENDAR_BUSY_TIMES
- Get busy time blocks [Required]
CAL_GET_AVAILABLE_SLOTS_INFO
- Get specific available slots [Required]
Key parameters:
- : Start date for availability check (YYYY-MM-DD)
- : End date for availability check (YYYY-MM-DD)
- : Event type to check slots for
- : Timezone for the availability response
- : Timezone of the requesting user
Pitfalls:
- Busy times show when the user is NOT available
- Available slots are specific to an event type's duration and configuration
- Date range should be reasonable (not months in advance) to get accurate results
- Timezone affects how slots are displayed; always specify explicitly
- Availability reflects calendar integrations (Google Calendar, Outlook, etc.)
3. Configure Webhooks
When to use: User wants to set up or manage webhook notifications for booking events
Tool sequence:
CAL_RETRIEVE_WEBHOOKS_LIST
- List existing webhooks [Required]
- - Get specific webhook details [Optional]
- - Update webhook configuration [Optional]
- - Remove a webhook [Optional]
Key parameters:
- : Webhook ID for GET/UPDATE/DELETE operations
- : Webhook endpoint URL
- : Array of event types to trigger on
- : Whether the webhook is active
- : Webhook signing secret
Pitfalls:
- Webhook URLs must be publicly accessible HTTPS endpoints
- Event triggers include: 'BOOKING_CREATED', 'BOOKING_RESCHEDULED', 'BOOKING_CANCELLED', etc.
- Inactive webhooks do not fire; toggle to enable/disable
- Webhook secrets are used for payload signature verification
4. Manage Teams
When to use: User wants to create, view, or manage teams and team event types
Tool sequence:
- - List all teams [Required]
CAL_GET_TEAM_INFORMATION_BY_TEAM_ID
- Get specific team details [Optional]
CAL_CREATE_TEAM_IN_ORGANIZATION
- Create a new team [Optional]
CAL_RETRIEVE_TEAM_EVENT_TYPES
- List event types for a team [Optional]
Key parameters:
- : Team identifier
- : Team name (for creation)
- : URL-friendly team identifier
Pitfalls:
- Team creation may require organization-level permissions
- Team event types are separate from personal event types
- Team slugs must be URL-safe and unique within the organization
5. Organization Management
When to use: User wants to view organization details
Tool sequence:
- - Get the organization ID [Required]
Key parameters: (none required)
Pitfalls:
- Organization ID is needed for team creation and org-level operations
- Not all Cal.com accounts have organizations; personal plans may return errors
Common Patterns
Booking Creation Flow
1. Call CAL_GET_AVAILABLE_SLOTS_INFO to find open slots
2. Present available times to the user
3. Call CAL_POST_NEW_BOOKING_REQUEST with selected slot
4. Confirm booking creation response
ID Resolution
Team name -> Team ID:
1. Call CAL_GET_TEAMS_LIST
2. Find team by name in response
3. Extract id field
Webhook Setup
1. Call CAL_RETRIEVE_WEBHOOKS_LIST to check existing hooks
2. Create or update webhook with desired triggers
3. Verify webhook fires on test booking
Known Pitfalls
Date/Time Formats:
- Booking times: ISO 8601 with timezone (e.g., '2024-01-15T09:00:00Z')
- Availability dates: YYYY-MM-DD format
- Always specify timezone explicitly to avoid confusion
Event Types:
- Event type IDs are numeric integers
- Event types define duration, location, and booking rules
- Disabled event types cannot accept new bookings
Permissions:
- Team operations require team membership or admin access
- Organization operations require org-level permissions
- Webhook management requires appropriate access level
Rate Limits:
- Cal.com API has rate limits per API key
- Implement backoff on 429 responses
Quick Reference
| Task | Tool Slug | Key Params |
|---|
| List bookings | CAL_FETCH_ALL_BOOKINGS | status, afterStart, beforeEnd |
| Create booking | CAL_POST_NEW_BOOKING_REQUEST | eventTypeId, start, end, name, email |
| Get busy times | CAL_RETRIEVE_CALENDAR_BUSY_TIMES | dateFrom, dateTo |
| Get available slots | CAL_GET_AVAILABLE_SLOTS_INFO | eventTypeId, dateFrom, dateTo |
| List webhooks | CAL_RETRIEVE_WEBHOOKS_LIST | (none) |
| Get webhook | CAL_GET_WEBHOOK_BY_ID | id |
| Update webhook | CAL_UPDATE_WEBHOOK_BY_ID | id, subscriberUrl, eventTriggers |
| Delete webhook | CAL_DELETE_WEBHOOK_BY_ID | id |
| List teams | CAL_GET_TEAMS_LIST | (none) |
| Get team | CAL_GET_TEAM_INFORMATION_BY_TEAM_ID | teamId |
| Create team | CAL_CREATE_TEAM_IN_ORGANIZATION | name, slug |
| Team event types | CAL_RETRIEVE_TEAM_EVENT_TYPES | teamId |
| Get org ID | CAL_GET_ORGANIZATION_ID | (none) |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.