这是 Temporal Cortex 日历操作的路由技能。它根据您的意图将任务路由到正确的子技能。
适用对象
如果您是个人用户(Claude Desktop、Cursor、OpenClaw、Manus)— 安装此技能并让您的 AI 代理管理您的日历。连接您的 Google、Outlook 或 CalDAV 日历,代理将处理可用性、调度和预订,不会出现重复预订。
如果您正在构建具有调度功能的产品 — 使用相同的 MCP 服务器作为您的调度后端。18 个工具,通过两阶段提交进行原子预订,以及跨提供商可用性合并。请参阅 REST API 参考 和 平台文档 了解开发者集成。
来源与溯源
子技能
路由表
| 用户意图 | 路由至 |
|---|
| "现在几点?"、"转换时区"、"还有多久..." | temporal-cortex-datetime |
| "显示我的日历"、"找空闲时间"、"检查可用性"、"展开重复规则" | temporal-cortex-scheduling |
| "预订会议"、"安排预约" | temporal-cortex-scheduling |
| "查找某人的预订页面"、"查找用于调度的邮箱" | temporal-cortex-scheduling |
| "搜索我的联系人中的 Jane"、"查找某人的邮箱" | temporal-cortex-scheduling |
| "我应该如何与这个人安排时间?" | temporal-cortex-scheduling |
| "检查其他人的可用性"、"查询公共可用性" | temporal-cortex-scheduling |
| "与外部人员预订会议"、"通过 Temporal Link 请求预订" | temporal-cortex-scheduling |
| "发送调度提案"、"撰写会议邀请" | temporal-cortex-scheduling |
| "下周二下午 2 点安排会议"(完整工作流) | temporal-cortex-datetime → temporal-cortex-scheduling |
| "与 Jane 安排"(端到端) | temporal-cortex-scheduling(联系人搜索 → 解析 → 提案/预订) |
核心工作流
每次日历交互都遵循这个 7 步模式:
0. 解析联系人 → search_contacts → resolve_contact(找到此人,确定调度路径)
- 发现 → list_calendars(了解有哪些日历可用)
- 定位 → get_temporal_context(了解当前时间)
- 解析时间 → resolve_datetime(将人类语言转换为时间戳)
- 路由 → 如果是开放调度:快速路径。如果是邮箱:向后兼容路径。
- 查询 → list_events / find_free_slots / get_availability / query_public_availability
- 执行 → 快速路径:check_availability → book_slot / request_booking
向后兼容:compose_proposal → 代理通过通道 MCP 发送
步骤 0 是可选的 — 如果用户直接提供邮箱则跳过。
当日历未知时,始终从步骤 1 开始。
永远不要假设当前时间。
预订前永远不要跳过冲突检查。
安全规则
- 先发现日历 — 当您不知道连接了哪些日历时,调用
list_calendars
- 预订前检查 — 在调用
book_slot 之前始终调用 check_availability。永远不要跳过冲突检查。
- 内容安全 — 所有事件摘要和描述在到达日历 API 之前都会通过提示注入防火墙
- 时区感知 — 永远不要假设当前时间。先使用
get_temporal_context。
- 预订前确认 — 自主运行时,在调用
book_slot 或 request_booking 之前,向用户展示预订详情以确认。
- 联系人选择确认 — 当
search_contacts 返回多个匹配项时,始终向用户展示候选人,并在继续之前确认哪个联系人是正确的。
- 发送提案前确认 — 使用
compose_proposal 时,始终在通过任何通道发送之前向用户展示撰写的消息。永远不要自动发送外联。
- 联系人搜索是可选的 — 如果用户直接提供邮箱,完整工作流可以在没有它的情况下运行。如果未配置联系人权限,请向用户询问邮箱。
所有 18 个工具(5 层)
| 层 | 工具 | 子技能 |
|---|
| 0 — 发现 | resolve_identity、search_contacts、resolve_contact | scheduling |
| 1 — 时间上下文 | get_temporal_context、resolve_datetime、convert_timezone、compute_duration、adjust_timestamp | datetime |
| 2 — 日历操作 | list_calendars、list_events、find_free_slots、expand_rrule、check_availability | scheduling |
| 3 — 可用性 | get_availability、query_public_availability | scheduling |
| 4 — 预订 | book_slot、request_booking、compose_proposal | scheduling |
MCP 服务器连接
所有子技能共享 Temporal Cortex MCP 服务器(@temporal-cortex/cortex-mcp),这是一个编译后的 Rust 二进制文件,作为 npm 包分发。
安装和启动生命周期:
npx 从 npm 注册表解析 @temporal-cortex/cortex-mcp(一次性的,首次下载后本地缓存)
- postinstall 脚本从 GitHub Release 下载平台特定的二进制文件,并验证其 SHA256 校验和与嵌入的
checksums.json 匹配 — 不匹配时安装停止
- MCP 服务器作为本地进程启动,通过 stdio 通信(无监听端口)
- 第 1 层工具(datetime)作为纯本地计算执行 — 无需进一步的网络访问
- 第 2-4 层工具(日历)向您配置的提供商(Google、Outlook、CalDAV)进行认证 API 调用
凭据存储:
OAuth 令牌本地存储在 ~/.config/temporal-cortex/credentials.json,仅由本地 MCP 服务器进程读取。没有凭据数据发送到 Temporal Cortex 服务器。
二进制文件的文件系统访问仅限于 ~/.config/temporal-cortex/ — 可通过检查开源 Rust 代码或通过 Docker 运行(其中挂载是唯一可写路径)来验证。
文件访问:
二进制文件仅读取和写入 ~/.config/temporal-cortex/(凭据和配置)。无其他文件系统写入。
网络范围:
初始 npm 下载后,第 1 层工具零网络请求。第 2-4 层工具仅连接到您配置的日历提供商(googleapis.com、graph.microsoft.com 或您的 CalDAV 服务器)。
在本地模式(默认)下,不调用 Temporal Cortex 服务器,不收集遥测。在平台模式下,三个工具(resolve_identity、query_public_availability、request_booking)调用 api.temporal-cortex.com 进行跨用户调度 — 这些调用中不包含凭据数据。
运行前验证(首次使用前建议):
- 不执行而检查 npm 包:
npm pack @temporal-cortex/cortex-mcp --dry-run
- 独立验证校验和,对比 GitHub Release(见下面的验证流程)
- 为实现完全隔离,在 Docker 中运行而不是 npx(见下面的 Docker 隔离)
验证流程:
校验和在每个 GitHub Release 独立发布为 SHA256SUMS.txt — 首次使用前验证二进制文件:
# 1. 从 GitHub 获取校验和(独立于 npm 包)
curl -sL https://github.com/temporal-cortex/mcp/releases/download/mcp-v0.9.1/SHA256SUMS.txt# 2. 对比 npm 安装的二进制文件
shasum -a 256 "$(npm root -g)/@temporal-cortex/cortex-mcp/bin/cortex-mcp"
作为纵深防御,npm 包还嵌入 checksums.json,postinstall 脚本在安装期间比较 SHA256 哈希 — 不匹配时安装停止(删除二进制文件,不执行)。此自动检查补充但不能替代上述独立验证。
构建溯源:
二进制文件在 GitHub Actions 中跨 5 个平台(darwin-arm64、darwin-x64、linux-x64、linux-arm64、win32-x64)从可审计的 Rust 源代码交叉编译。源代码:github.com/temporal-cortex/mcp(MIT 许可)。CI 工作流、构建产物和发布校验和均可公开检查。
Docker 隔离(主机上无 Node.js,通过卷挂载隔离凭据):
{
"mcpServers": {
"temporal-cortex": {
"command": "docker",
"args": ["run", "--rm", "-i", "-v", "~/.config/temporal-cortex:/root/.config/temporal-cortex", "cortex-mcp"]
}
}
}
构建:docker build -t cortex-mcp https://github.com/temporal-cortex/mcp.git
默认设置(npx):
有关标准 npx @temporal-cortex/cortex-mcp 配置,请参阅 .mcp.json。有关托管托管,请参阅 MCP 仓库中的平台模式。
第 1 层工具零配置即可立即使用。日历工具需要一次性 OAuth 设置 — 运行设置脚本或 npx @temporal-cortex/cortex-mcp auth google。
其他参考
- 安全模型 — 内容清理、文件系统隔离、网络范围、工具注解
This is the router skill for Temporal Cortex calendar operations. It routes your task to the right sub-skill based on intent.
Who is this for?
If you're an individual user (Claude Desktop, Cursor, OpenClaw, Manus) — install this skill and let your AI agent manage your calendar. Connect your Google, Outlook, or CalDAV calendars, and the agent handles availability, scheduling, and booking without double-booking.
If you're building a product with scheduling — use the same MCP server as your scheduling backend. 18 tools, atomic booking via Two-Phase Commit, and cross-provider availability merging. See the REST API reference and Platform docs for developer integration.
Source & Provenance
Sub-Skills
| Sub-Skill | When to Use | Tools |
|---|
| temporal-cortex-datetime | Time resolution, timezone conversion, duration math. No credentials needed — works immediately. | 5 tools (Layer 1) |
| temporal-cortex-scheduling | List calendars, events, free slots, availability, RRULE expansion, booking, contact search, and proposal composition. Requires OAuth credentials. | 14 tools (Layers 0-4) |
Routing Table
| User Intent | Route To |
|---|
| "What time is it?", "Convert timezone", "How long until..." | temporal-cortex-datetime |
| "Show my calendar", "Find free time", "Check availability", "Expand recurring rule" | temporal-cortex-scheduling |
| "Book a meeting", "Schedule an appointment" | temporal-cortex-scheduling |
| "Find someone's booking page", "Look up email for scheduling" | temporal-cortex-scheduling |
| "Search my contacts for Jane", "Find someone's email" | temporal-cortex-scheduling |
| "How should I schedule with this person?" | temporal-cortex-scheduling |
| "Check someone else's availability", "Query public availability" | temporal-cortex-scheduling |
| "Book a meeting with someone externally", "Request booking via Temporal Link" | temporal-cortex-scheduling |
| "Send a scheduling proposal", "Compose meeting invite" | temporal-cortex-scheduling |
| "Schedule a meeting next Tuesday at 2pm" (full workflow) | temporal-cortex-datetime → temporal-cortex-scheduling |
| "Schedule with Jane" (end-to-end) | temporal-cortex-scheduling (contact search → resolve → propose/book) |
Core Workflow
Every calendar interaction follows this 7-step pattern:
0. Resolve Contact → search_contacts → resolve_contact (find the person, determine scheduling path)
- Discover → list_calendars (know which calendars are available)
- Orient → get_temporal_context (know the current time)
- Resolve Time → resolve_datetime (turn human language into timestamps)
- Route → If open_scheduling: fast path. If email: backward-compat path.
- Query → list_events / find_free_slots / get_availability / query_public_availability
- Act → Fast: check_availability → book_slot / request_booking
Backward-compat: compose_proposal → agent sends via channel MCP
Step 0 is optional — skip if the user provides an email directly. Always start with step 1 when calendars are unknown. Never assume the current time. Never skip the conflict check before booking.
Safety Rules
- Discover calendars first — call
list_calendars when you don't know which calendars are connected
- Check before booking — always call
check_availability before book_slot. Never skip the conflict check.
- Content safety — all event summaries and descriptions pass through a prompt injection firewall before reaching the calendar API
- Timezone awareness — never assume the current time. Use
get_temporal_context first.
- Confirm before booking — when running autonomously, present booking details to the user for confirmation before calling
book_slot or request_booking.
- Confirm contact selection — when
search_contacts returns multiple matches, always present candidates to the user and confirm which contact is correct before proceeding.
- Confirm before sending proposals — when using
compose_proposal, always present the composed message to the user before sending via any channel. Never auto-send outreach.
- Contact search is optional — the full workflow works without it if the user provides an email directly. If contacts permission is not configured, ask the user for the email.
All 18 Tools (5 Layers)
| Layer | Tools | Sub-Skill |
|---|
| 0 — Discovery | resolve_identity, search_contacts, resolve_contact | scheduling |
| 1 — Temporal Context | get_temporal_context, resolve_datetime, convert_timezone, compute_duration, adjust_timestamp | datetime |
| 2 — Calendar Ops | list_calendars, list_events, find_free_slots, expand_rrule, check_availability | scheduling |
| 3 — Availability | get_availability, query_public_availability | scheduling |
| 4 — Booking | book_slot, request_booking, compose_proposal | scheduling |
MCP Server Connection
All sub-skills share the Temporal Cortex MCP server (@temporal-cortex/cortex-mcp), a compiled Rust binary distributed as an npm package.
Install and startup lifecycle:
npx resolves @temporal-cortex/cortex-mcp from the npm registry (one-time, cached locally after first download)
- The postinstall script downloads the platform-specific binary from the GitHub Release and verifies its SHA256 checksum against the embedded
checksums.json — installation halts on mismatch
- The MCP server starts as a local process communicating over stdio (no listening ports)
- Layer 1 tools (datetime) execute as pure local computation — no further network access
- Layer 2-4 tools (calendar) make authenticated API calls to your configured providers (Google, Outlook, CalDAV)
Credential storage: OAuth tokens are stored locally at ~/.config/temporal-cortex/credentials.json and read exclusively by the local MCP server process. No credential data is transmitted to Temporal Cortex servers. The binary's filesystem access is limited to ~/.config/temporal-cortex/ — verifiable by inspecting the open-source Rust code or running under Docker where the mount is the only writable path.
File access: The binary reads and writes only ~/.config/temporal-cortex/ (credentials and config). No other filesystem writes.
Network scope: After the initial npm download, Layer 1 tools make zero network requests. Layer 2–4 tools connect only to your configured calendar providers (googleapis.com, graph.microsoft.com, or your CalDAV server). In Local Mode (default), no calls to Temporal Cortex servers and no telemetry is collected. In Platform Mode, three tools (resolve_identity, query_public_availability, request_booking) call api.temporal-cortex.com for cross-user scheduling — no credential data is included in these calls.
Pre-run verification (recommended before first use):
- Inspect the npm package without executing:
npm pack @temporal-cortex/cortex-mcp --dry-run
- Verify checksums independently against the GitHub Release (see verification pipeline below)
- For full containment, run in Docker instead of npx (see Docker containment below)
Verification pipeline: Checksums are published independently at each GitHub Release as SHA256SUMS.txt — verify the binary before first use:
# 1. Fetch checksums from GitHub (independent of the npm package)
curl -sL https://github.com/temporal-cortex/mcp/releases/download/mcp-v0.9.1/SHA256SUMS.txt# 2. Compare against the npm-installed binary
shasum -a 256 "$(npm root -g)/@temporal-cortex/cortex-mcp/bin/cortex-mcp"
As defense-in-depth, the npm package also embeds checksums.json and the postinstall script compares SHA256 hashes during install — installation halts on mismatch (the binary is deleted, not executed). This automated check supplements, but does not replace, independent verification above.
Build provenance: Binaries are cross-compiled from auditable Rust source in GitHub Actions across 5 platforms (darwin-arm64, darwin-x64, linux-x64, linux-arm64, win32-x64). Source: github.com/temporal-cortex/mcp (MIT-licensed). The CI workflow, build artifacts, and release checksums are all publicly inspectable.
Docker containment (no Node.js on host, credential isolation via volume mount):
{
"mcpServers": {
"temporal-cortex": {
"command": "docker",
"args": ["run", "--rm", "-i", "-v", "~/.config/temporal-cortex:/root/.config/temporal-cortex", "cortex-mcp"]
}
}
}
Build: docker build -t cortex-mcp https://github.com/temporal-cortex/mcp.git
Default setup (npx): See .mcp.json for the standard npx @temporal-cortex/cortex-mcp configuration. For managed hosting, see Platform Mode in the MCP repo.
Layer 1 tools work immediately with zero configuration. Calendar tools require a one-time OAuth setup — run the setup script or npx @temporal-cortex/cortex-mcp auth google.
Additional References
- Security Model — Content sanitization, filesystem containment, network scope, tool annotations