Cal.com Automation 简介
Cal.com Automation 是一个通过 Rube MCP 驱动的技能,用于自动化 Cal.com 的日程安排相关操作。其底层依赖 Composio 的 Cal 工具包,并通过 Rube MCP 暴露可用工具,从而让代理能够以编程方式管理预订、查询可用性、配置 Webhook 以及处理团队事务。
用途
该技能主要用于替代手动操作 Cal.com 后台的重复性任务,包括查看和创建预订、检查空闲/忙碌时间、设置或修改 Webhook 通知,以及查询和管理团队与组织信息。它适合需要将 Cal.com 日程能力集成到自动化流程中的场景。
前置条件
使用前需要满足以下条件:Rube MCP 已连接(RUBE_SEARCH_TOOLS 可用);已通过 RUBE_MANAGE_CONNECTIONS 并指定 toolkit cal 建立有效的 Cal.com 连接;在执行任何工作流前,应始终先调用 RUBE_SEARCH_TOOLS 以获取当前的工具 schema。
设置方式
获取 Rube MCP 的方式是在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务器,无需 API 密钥,添加端点即可工作。随后确认 RUBE_SEARCH_TOOLS 有响应,以验证 Rube MCP 可用。接着调用 RUBE_MANAGE_CONNECTIONS 并指定 toolkit cal;若连接不是 ACTIVE 状态,则按照返回的授权链接完成 Cal.com 身份验证;在运行任何工作流之前,确认连接状态显示为 ACTIVE。
主要能力
-
管理预订:可列出、创建或审阅预订。列出时使用 CAL_FETCH_ALL_BOOKINGS(必需),创建时使用 CAL_POST_NEW_BOOKING_REQUEST(可选)。列出参数包括 status(upcoming、recurring、past、cancelled、unconfirmed)、afterStart、beforeEnd(均为 ISO 8601);创建参数包括 eventTypeId、start、end(ISO 8601)、name、email、timeZone(IANA 格式)、language、metadata。
-
检查可用性:可查询忙碌时间块与可预订时段。使用 CAL_RETRIEVE_CALENDAR_BUSY_TIMES(必需)和 CAL_GET_AVAILABLE_SLOTS_INFO(必需)。参数包括 dateFrom、dateTo(YYYY-MM-DD)、eventTypeId、timeZone、loggedInUsersTz。
-
配置 Webhook:可列出、查看、更新与删除 Webhook。使用 CAL_RETRIEVE_WEBHOOKS_LIST(必需)、CAL_GET_WEBHOOK_BY_ID、CAL_UPDATE_WEBHOOK_BY_ID、CAL_DELETE_WEBHOOK_BY_ID(可选)。参数包括 id、subscriberUrl、eventTriggers、active、secret。事件触发器包括 BOOKING_CREATED、BOOKING_RESCHEDULED、BOOKING_CANCELLED 等。
-
管理团队:可列出团队、查看团队详情、在组织下创建团队、列出团队事件类型。使用 CAL_GET_TEAMS_LIST(必需)、CAL_GET_TEAM_INFORMATION_BY_TEAM_ID、CAL_CREATE_TEAM_IN_ORGANIZATION、CAL_RETRIEVE_TEAM_EVENT_TYPES(可选)。参数包括 teamId、name、slug。
-
组织管理:使用 CAL_GET_ORGANIZATION_ID 获取组织 ID,该 ID 在创建团队和组织级操作时需要使用。
使用方式与常见模式
预订创建流程为:先用 CAL_GET_AVAILABLE_SLOTS_INFO 查找可用时段,向用户展示可用时间,再用 CAL_POST_NEW_BOOKING_REQUEST 提交选定时段,最后确认创建响应。
团队名称到团队 ID 的解析流程为:调用 CAL_GET_TEAMS_LIST,在响应中按名称查找团队,提取 id 字段。
Webhook 设置流程为:调用 CAL_RETRIEVE_WEBHOOKS_LIST 检查现有 hook,使用所需触发器创建或更新 Webhook,再通过测试预订验证 Webhook 是否触发。
快速参考(任务 / 工具 / 关键参数)
列表预订:CAL_FETCH_ALL_BOOKINGS,参数 status、afterStart、beforeEnd。 创建预订:CAL_POST_NEW_BOOKING_REQUEST,参数 eventTypeId、start、end、name、email。 获取忙碌时间:CAL_RETRIEVE_CALENDAR_BUSY_TIMES,参数 dateFrom、dateTo。 获取可用时段:CAL_GET_AVAILABLE_SLOTS_INFO,参数 eventTypeId、dateFrom、dateTo。 列出 Webhook:CAL_RETRIEVE_WEBHOOKS_LIST,无参数。 获取 Webhook:CAL_GET_WEBHOOK_BY_ID,参数 id。 更新 Webhook:CAL_UPDATE_WEBHOOK_BY_ID,参数 id、subscriberUrl、eventTriggers。 删除 Webhook:CAL_DELETE_WEBHOOK_BY_ID,参数 id。 列出团队:CAL_GET_TEAMS_LIST,无参数。 获取团队:CAL_GET_TEAM_INFORMATION_BY_TEAM_ID,参数 teamId。 创建团队:CAL_CREATE_TEAM_IN_ORGANIZATION,参数 name、slug。 团队事件类型:CAL_RETRIEVE_TEAM_EVENT_TYPES,参数 teamId。 获取组织 ID:CAL_GET_ORGANIZATION_ID,无参数。
注意事项与限制
在日期时间格式方面:预订时间使用带时区的 ISO 8601(如 '2024-01-15T09:00:00Z');可用性日期使用 YYYY-MM-DD 格式;应始终显式指定时区。
在事件类型方面:eventTypeId 为数字整数,必须引用有效的活动事件类型;被禁用的事件类型无法接受新预订;事件类型定义时长、地点与预订规则。
在预订方面:创建预订需要匹配可用时段,因此应先检查可用性;状态过滤值使用特定字符串,无效值会返回空结果。
在可用性方面:忙碌时间表示用户不可用的时段;可用时段特定于某事件类型的时长与配置;日期范围应合理,不宜过于超前;时区会影响时段显示方式;可用性会反映日历集成(如 Google Calendar、Outlook 等)。
在 Webhook 方面:URL 必须是可公开访问的 HTTPS 端点;非活动的 Webhook 不会触发,可通过 active 开关启用或禁用;Webhook secret 用于负载签名验证。
在团队与组织方面:创建团队可能需要组织级权限;团队事件类型与个人事件类型相互独立;团队 slug 必须 URL 安全且在组织内唯一;并非所有 Cal.com 账户都拥有组织,个人方案可能返回错误。
在权限方面:团队操作需要团队成员身份或管理员权限;组织操作需要组织级权限;Webhook 管理需要相应的访问级别。
在速率限制方面:Cal.com API 对每个 API 密钥有速率限制,遇到 429 响应时应实现退避。
适用边界
该技能仅适用于任务明确匹配上述范围的情况。不应将其输出视为环境特定验证、测试或专家评审的替代。若缺少必需的输入、权限、安全边界或成功标准,应停止并请求澄清。