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 (RUBESEARCHTOOLS available)
- Active Cal.com connection via
RUBE_MANAGE_CONNECTIONS with toolkit INLINECODE1 - 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 - Call
RUBE_MANAGE_CONNECTIONS with toolkit INLINECODE6 - 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:
- 1.
CAL_FETCH_ALL_BOOKINGS - List all bookings with filters [Required] - INLINECODE8 - Create a new booking [Optional]
Key parameters for listing:
- -
status: Filter by booking status ('upcoming', 'recurring', 'past', 'cancelled', 'unconfirmed') - INLINECODE10 : Filter bookings after this date (ISO 8601)
- INLINECODE11 : Filter bookings before this date (ISO 8601)
Key parameters for creation:
- -
eventTypeId: Event type ID for the booking - INLINECODE13 : Booking start time (ISO 8601)
- INLINECODE14 : Booking end time (ISO 8601)
- INLINECODE15 : Attendee name
- INLINECODE16 : Attendee email
- INLINECODE17 : Attendee timezone (IANA format)
- INLINECODE18 : Attendee language code
- INLINECODE19 : Additional metadata object
Pitfalls:
- - Date filters use ISO 8601 format with timezone (e.g., '2024-01-15T09:00:00Z')
- INLINECODE20 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] - INLINECODE22 - Get specific available slots [Required]
Key parameters:
- -
dateFrom: Start date for availability check (YYYY-MM-DD) - INLINECODE24 : End date for availability check (YYYY-MM-DD)
- INLINECODE25 : Event type to check slots for
- INLINECODE26 : Timezone for the availability response
- INLINECODE27 : 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] - INLINECODE29 - Get specific webhook details [Optional]
- INLINECODE30 - Update webhook configuration [Optional]
- INLINECODE31 - Remove a webhook [Optional]
Key parameters:
- -
id: Webhook ID for GET/UPDATE/DELETE operations - INLINECODE33 : Webhook endpoint URL
- INLINECODE34 : Array of event types to trigger on
- INLINECODE35 : Whether the webhook is active
- INLINECODE36 : Webhook signing secret
Pitfalls:
- - Webhook URLs must be publicly accessible HTTPS endpoints
- Event triggers include: 'BOOKINGCREATED', 'BOOKINGRESCHEDULED', '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] - INLINECODE39 - Get specific team details [Optional]
- INLINECODE40 - Create a new team [Optional]
- INLINECODE41 - List event types for a team [Optional]
Key parameters:
- -
teamId: Team identifier - INLINECODE43 : Team name (for creation)
- INLINECODE44 : 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
CODEBLOCK0
ID Resolution
Team name -> Team ID:
CODEBLOCK1
Webhook Setup
CODEBLOCK2
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 | CALFETCHALLBOOKINGS | status, afterStart, beforeEnd |
| Create booking |
CALPOST
NEWBOOKING_REQUEST | eventTypeId, start, end, name, email |
| Get busy times | CAL
RETRIEVECALENDAR
BUSYTIMES | dateFrom, dateTo |
| Get available slots | CAL
GETAVAILABLE
SLOTSINFO | eventTypeId, dateFrom, dateTo |
| List webhooks | CAL
RETRIEVEWEBHOOKS_LIST | (none) |
| Get webhook | CAL
GETWEBHOOK
BYID | id |
| Update webhook | CAL
UPDATEWEBHOOK
BYID | id, subscriberUrl, eventTriggers |
| Delete webhook | CAL
DELETEWEBHOOK
BYID | id |
| List teams | CAL
GETTEAMS_LIST | (none) |
| Get team | CAL
GETTEAM
INFORMATIONBY
TEAMID | teamId |
| Create team | CAL
CREATETEAM
INORGANIZATION | name, slug |
| Team event types | CAL
RETRIEVETEAM
EVENTTYPES | teamId |
| Get org ID | CAL
GETORGANIZATION_ID | (none) |
通过Rube MCP实现Cal.com自动化
通过Rube MCP的Composio Cal工具包自动化Cal.com的日程安排操作。
前置条件
- - 必须连接Rube MCP(RUBESEARCHTOOLS可用)
- 通过RUBEMANAGECONNECTIONS使用cal工具包建立活跃的Cal.com连接
- 始终先调用RUBESEARCHTOOLS获取当前工具架构
设置
获取Rube MCP:在客户端配置中将https://rube.app/mcp添加为MCP服务器。无需API密钥——只需添加端点即可使用。
- 1. 通过确认RUBESEARCHTOOLS有响应来验证Rube MCP可用
- 使用cal工具包调用RUBEMANAGECONNECTIONS
- 如果连接未处于ACTIVE状态,按照返回的认证链接完成Cal.com身份验证
- 在运行任何工作流前确认连接状态显示为ACTIVE
核心工作流
1. 管理预订
使用场景:用户想要列出、创建或查看预订
工具顺序:
- 1. CALFETCHALLBOOKINGS - 使用筛选条件列出所有预订 [必需]
- CALPOSTNEWBOOKING_REQUEST - 创建新预订 [可选]
列表查询的关键参数:
- - status:按预订状态筛选(upcoming、recurring、past、cancelled、unconfirmed)
- afterStart:筛选此日期之后的预订(ISO 8601格式)
- beforeEnd:筛选此日期之前的预订(ISO 8601格式)
创建预订的关键参数:
- - eventTypeId:预订的事件类型ID
- start:预订开始时间(ISO 8601格式)
- end:预订结束时间(ISO 8601格式)
- name:参与者姓名
- email:参与者邮箱
- timeZone:参与者时区(IANA格式)
- language:参与者语言代码
- metadata:额外的元数据对象
注意事项:
- - 日期筛选使用带时区的ISO 8601格式(例如2024-01-15T09:00:00Z)
- eventTypeId必须引用有效且活跃的事件类型
- 创建预订需要匹配可用的时间段;先检查可用性
- 时区必须是有效的IANA时区字符串(例如America/New_York)
- 状态筛选值是特定字符串;无效值将返回空结果
2. 检查可用性
使用场景:用户想要查找空闲/忙碌时间或可用的预订时间段
工具顺序:
- 1. CALRETRIEVECALENDARBUSYTIMES - 获取忙碌时间段 [必需]
- CALGETAVAILABLESLOTSINFO - 获取特定可用时间段 [必需]
关键参数:
- - dateFrom:可用性检查的开始日期(YYYY-MM-DD格式)
- dateTo:可用性检查的结束日期(YYYY-MM-DD格式)
- eventTypeId:要检查时间段的事件类型
- timeZone:可用性响应的时区
- loggedInUsersTz:请求用户的时区
注意事项:
- - 忙碌时间显示用户不可用的时间段
- 可用时间段特定于事件类型的时长和配置
- 日期范围应合理(不要提前数月)以获得准确结果
- 时区影响时间段的显示方式;始终明确指定
- 可用性反映日历集成情况(Google日历、Outlook等)
3. 配置Webhook
使用场景:用户想要设置或管理预订事件的Webhook通知
工具顺序:
- 1. CALRETRIEVEWEBHOOKSLIST - 列出现有Webhook [必需]
- CALGETWEBHOOKBYID - 获取特定Webhook详情 [可选]
- CALUPDATEWEBHOOKBYID - 更新Webhook配置 [可选]
- CALDELETEWEBHOOKBY_ID - 删除Webhook [可选]
关键参数:
- - id:用于GET/UPDATE/DELETE操作的Webhook ID
- subscriberUrl:Webhook端点URL
- eventTriggers:触发事件的事件类型数组
- active:Webhook是否活跃
- secret:Webhook签名密钥
注意事项:
- - Webhook URL必须是可公开访问的HTTPS端点
- 事件触发器包括:BOOKINGCREATED、BOOKINGRESCHEDULED、BOOKING_CANCELLED等
- 非活跃的Webhook不会触发;切换active来启用/禁用
- Webhook密钥用于负载签名验证
4. 管理团队
使用场景:用户想要创建、查看或管理团队及团队事件类型
工具顺序:
- 1. CALGETTEAMSLIST - 列出所有团队 [必需]
- CALGETTEAMINFORMATIONBYTEAMID - 获取特定团队详情 [可选]
- CALCREATETEAMINORGANIZATION - 创建新团队 [可选]
- CALRETRIEVETEAMEVENT_TYPES - 列出团队的事件类型 [可选]
关键参数:
- - teamId:团队标识符
- name:团队名称(用于创建)
- slug:URL友好的团队标识符
注意事项:
- - 创建团队可能需要组织级别的权限
- 团队事件类型与个人事件类型是分开的
- 团队slug必须在组织内是URL安全且唯一的
5. 组织管理
使用场景:用户想要查看组织详情
工具顺序:
- 1. CALGETORGANIZATION_ID - 获取组织ID [必需]
关键参数:(无需参数)
注意事项:
- - 团队创建和组织级操作需要组织ID
- 并非所有Cal.com账户都有组织;个人计划可能返回错误
常见模式
预订创建流程
- 1. 调用CALGETAVAILABLESLOTSINFO查找空闲时间段
- 向用户展示可用时间
- 使用选定的时间段调用CALPOSTNEWBOOKINGREQUEST
- 确认预订创建响应
ID解析
团队名称 -> 团队ID:
- 1. 调用CALGETTEAMS_LIST
- 在响应中按名称查找团队
- 提取id字段
Webhook设置
- 1. 调用CALRETRIEVEWEBHOOKS_LIST检查现有Webhook
- 使用所需触发器创建或更新Webhook
- 通过测试预订验证Webhook是否触发
已知注意事项
日期/时间格式:
- - 预订时间:带时区的ISO 8601格式(例如2024-01-15T09:00:00Z)
- 可用性日期:YYYY-MM-DD格式
- 始终明确指定时区以避免混淆
事件类型:
- - 事件类型ID是数字整数
- 事件类型定义时长、地点和预订规则
- 禁用的事件类型无法接受新预订
权限:
- - 团队操作需要团队成员身份或管理员权限
- 组织操作需要组织级权限
- Webhook管理需要适当的访问级别
速率限制:
- - Cal.com API对每个API密钥有速率限制
- 在收到429响应时实施退避策略
快速参考
| 任务 | 工具标识 | 关键参数 |
|---|
| 列出预订 | CALFETCHALLBOOKINGS | status, afterStart, beforeEnd |
| 创建预订 |
CALPOST
NEWBOOKING_REQUEST | eventTypeId, start, end, name, email |
| 获取忙碌时间 | CAL
RETRIEVECALENDAR
BUSYTIMES | dateFrom, dateTo |
| 获取可用时间段 | CAL
GETAVAILABLE
SLOTSINFO | eventTypeId, dateFrom, dateTo |
| 列出Webhook | CAL
RETRIEVEWEBHOOKS_LIST | (无) |
| 获取Webhook | CAL
GETWEBHOOK
BYID | id |
| 更新Webhook | CAL
UPDATEWEBHOOK
BYID | id, subscriberUrl, eventTriggers |
| 删除Webhook | CAL
DELETEWEBHOOK
BYID | id |
| 列出团队 | CAL
GETTEAMS_LIST | (无) |
| 获取团队 | CAL
GETTEAM
INFORMATIONBY
TEAMID | teamId |
| 创建团队 | CAL
CREATETEAM
INORGANIZATION | name, slug |
| 团队事件类型 | CAL
RETRIEVETEAM
EVENTTYPES