- 832 new automation skills covering every toolkit on composio.dev - Updated 78 existing skills with composio.dev/toolkits links - Total: 910 automation skills - Each skill includes toolkit slug, connection flow, tool discovery pattern, and links to composio.dev toolkit docs - All skills include "Powered by Composio" attribution Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
209 lines
7.4 KiB
Markdown
209 lines
7.4 KiB
Markdown
---
|
|
name: cal-com-automation
|
|
description: "Automate Cal.com tasks via Rube MCP (Composio): manage bookings, check availability, configure webhooks, and handle teams. Always search tools first for current schemas."
|
|
requires:
|
|
mcp: [rube]
|
|
---
|
|
|
|
# Cal.com Automation via Rube MCP
|
|
|
|
Automate Cal.com scheduling operations through Composio's Cal toolkit via Rube MCP.
|
|
|
|
**Toolkit docs**: [composio.dev/toolkits/cal](https://composio.dev/toolkits/cal)
|
|
|
|
## Prerequisites
|
|
|
|
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
|
|
- Active Cal.com connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `cal`
|
|
- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
|
|
|
|
## 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.
|
|
|
|
|
|
1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
|
|
2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `cal`
|
|
3. If connection is not ACTIVE, follow the returned auth link to complete Cal.com authentication
|
|
4. 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**:
|
|
1. `CAL_FETCH_ALL_BOOKINGS` - List all bookings with filters [Required]
|
|
2. `CAL_POST_NEW_BOOKING_REQUEST` - Create a new booking [Optional]
|
|
|
|
**Key parameters for listing**:
|
|
- `status`: Filter by booking status ('upcoming', 'recurring', 'past', 'cancelled', 'unconfirmed')
|
|
- `afterStart`: Filter bookings after this date (ISO 8601)
|
|
- `beforeEnd`: Filter bookings before this date (ISO 8601)
|
|
|
|
**Key parameters for creation**:
|
|
- `eventTypeId`: Event type ID for the booking
|
|
- `start`: Booking start time (ISO 8601)
|
|
- `end`: Booking end time (ISO 8601)
|
|
- `name`: Attendee name
|
|
- `email`: Attendee email
|
|
- `timeZone`: Attendee timezone (IANA format)
|
|
- `language`: Attendee language code
|
|
- `metadata`: Additional metadata object
|
|
|
|
**Pitfalls**:
|
|
- Date filters use ISO 8601 format with timezone (e.g., '2024-01-15T09:00:00Z')
|
|
- `eventTypeId` 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**:
|
|
1. `CAL_RETRIEVE_CALENDAR_BUSY_TIMES` - Get busy time blocks [Required]
|
|
2. `CAL_GET_AVAILABLE_SLOTS_INFO` - Get specific available slots [Required]
|
|
|
|
**Key parameters**:
|
|
- `dateFrom`: Start date for availability check (YYYY-MM-DD)
|
|
- `dateTo`: End date for availability check (YYYY-MM-DD)
|
|
- `eventTypeId`: Event type to check slots for
|
|
- `timeZone`: Timezone for the availability response
|
|
- `loggedInUsersTz`: 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**:
|
|
1. `CAL_RETRIEVE_WEBHOOKS_LIST` - List existing webhooks [Required]
|
|
2. `CAL_GET_WEBHOOK_BY_ID` - Get specific webhook details [Optional]
|
|
3. `CAL_UPDATE_WEBHOOK_BY_ID` - Update webhook configuration [Optional]
|
|
4. `CAL_DELETE_WEBHOOK_BY_ID` - Remove a webhook [Optional]
|
|
|
|
**Key parameters**:
|
|
- `id`: Webhook ID for GET/UPDATE/DELETE operations
|
|
- `subscriberUrl`: Webhook endpoint URL
|
|
- `eventTriggers`: Array of event types to trigger on
|
|
- `active`: Whether the webhook is active
|
|
- `secret`: 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 `active` 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**:
|
|
1. `CAL_GET_TEAMS_LIST` - List all teams [Required]
|
|
2. `CAL_GET_TEAM_INFORMATION_BY_TEAM_ID` - Get specific team details [Optional]
|
|
3. `CAL_CREATE_TEAM_IN_ORGANIZATION` - Create a new team [Optional]
|
|
4. `CAL_RETRIEVE_TEAM_EVENT_TYPES` - List event types for a team [Optional]
|
|
|
|
**Key parameters**:
|
|
- `teamId`: Team identifier
|
|
- `name`: Team name (for creation)
|
|
- `slug`: 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**:
|
|
1. `CAL_GET_ORGANIZATION_ID` - 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) |
|
|
|
|
---
|
|
*Powered by [Composio](https://composio.dev)*
|