create_agent
Register your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks.
name必填type必填description
ai.chronary由 chronary.ai 發布官方發布者v1.5.2更新於 Oct 24, 2026
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Chronary 是為 AI 代理打造的日曆 API,讓助理管理代理、日曆、事件、可用時段與排程提案。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/ai.chronary%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"chronary": {
"type": "http",
"url": "https://api.chronary.ai/mcp",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}MCP server for Chronary — calendar tools for AI assistants.
Drops 50 calendar tools (manage agents, calendars, and events, request human Google/Microsoft setup, find meeting times, run scheduling proposals, configure availability rules, manage webhooks, iCal subscriptions, scoped keys, audit log, and usage) into any MCP-compatible client: Claude Desktop, Cursor, VS Code Copilot, Claude Code, Windsurf.
One-click install via Smithery: npx -y @smithery/cli mcp add chronary/agent-calendar --client claude (swap --client for cursor, vscode, claude-code, windsurf, …).
chr_sk_).All examples use npx -y @chronary/mcp, which downloads and runs the latest version on demand. No install step required.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
macOS / Linux:
Windows (uses cmd /c because spawn can't resolve npx.cmd directly):
Restart Claude Desktop after saving.
Edit .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (user-level):
macOS / Linux:
Windows:
Edit .vscode/mcp.json (workspace) or run the MCP: Open User Configuration command for a user-level config. VS Code uses a different top-level key (servers) and requires an explicit type:
macOS / Linux:
Windows:
Edit .mcp.json at the project root, or ~/.claude.json for user-level:
macOS / Linux:
Windows:
Edit ~/.codeium/windsurf/mcp_config.json (%USERPROFILE%\.codeium\windsurf\mcp_config.json on Windows):
macOS / Linux:
Windows:
Windsurf limit: Cascade enforces a hard cap of 100 total tools across all MCP servers and 20 tool calls per prompt. Chronary exposes 50; consider
--toolsfiltering if you stack multiple servers.
--toolsExposing all 50 tools uses LLM tokens on every request. For focused workflows, whitelist only what you need:
For self-hosted Chronary instances or development against a local API:
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are surfaced to MCP clients so hosts can decide whether to require user confirmation.
"spawn npx ENOENT" on Windows — use the cmd /c npx ... form shown above.
"CHRONARY_API_KEY is required" — the env block must be nested under the server entry, not at the top of the config file.
Tools aren't showing up — restart the MCP client after editing the config. Most clients only read the config on startup.
Verify the binary runs locally:
Apache-2.0
來源:README.md,提交 8ac0cff
Register your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks.
name必填type必填descriptionList all agents in your organization
typelimitoffsetstatusCreate a calendar to hold events and track availability. Calendars are required before creating events — call this first when setting up a new agent. An agent can have multiple calendars (e.g. "Work", "Personal"). Org-level calendars (no agent_id) can be used as shared resources like meeting rooms.
name必填agent_idtimezone必填default_remindersCreate a booking, appointment, meeting, hold, or any scheduled event on a calendar. The calendar_id comes from create_calendar or list_events. Once created, this event blocks the agent's availability during that time and appears in availability queries. Use status="hold" with hold_expires_at to tentatively reserve a slot that auto-releases on TTL.
title必填statusall_dayend_time必填remindersstart_time必填calendar_id必填descriptionhold_priorityhold_expires_atrecurrence_ruleList events on a calendar or across an agent's calendars, including internally created events and externally synced events from iCal subscriptions (e.g. Google Calendar, Outlook). Provide `calendar_id` OR `agent_id`. Narrow with `start_after`/`start_before` (time window), `status`, and `source`.
limitexpandoffsetsourcestatusagent_idcalendar_idstart_afterstart_beforeRetrieve a single event by ID, including its title, times, status, location, reminders, and metadata. Works for both internally created events and externally synced iCal events. `calendar_id` is optional — if omitted the calendar is resolved from the event. Provide `calendar_id` to fail fast on cross-calendar typos.
event_id必填calendar_idReschedule or edit an event — change its title, description, start/end times, location, status, reminders, or metadata. Use this to move an appointment to a new time or update its details. Provide only the fields you want to change. Holds cannot be edited via this tool (use confirm_event / release_event). External iCal events are read-only. `calendar_id` is optional — if omitted it is resolved from the event.
titlestatusall_dayend_timeevent_id必填metadataremindersstart_timecalendar_iddescriptionrecurrence_ruleCheck when a single agent is free across its Chronary calendars and any human calendars authorized for that agent. This tool is fail-closed: always inspect `availability_state` and `warnings` before using slots. Accepts `start`/`end` or the `start_time`/`end_time` aliases.
endstartagent_id必填durationend_timestart_timeinclude_busyslot_durationFind slots when multiple agents are free across Chronary calendars and any human calendars authorized for each agent. This tool is fail-closed: always inspect `availability_state` and `warnings` before using slots. Accepts `agents`/`start`/`end` or their aliases.
endstartagentsdurationend_timeagent_idscalendarsstart_timeinclude_busyslot_durationDelete or cancel an event from a calendar. Use this to remove, cancel, or delete any scheduled event or appointment. The event is marked cancelled and excluded from future availability calculations. For a recurring series, pass `occurrence_start` to cancel just that one occurrence (the series continues); omit it to cancel the whole series. `calendar_id` is optional — if omitted the calendar is looked up from the event. Provide `calendar_id` to fail fast on cross-calendar typos.
event_id必填calendar_idoccurrence_startPromote a held event to a confirmed booking. The event must currently have status="hold" and its hold_expires_at must not have passed. After confirmation, event.started and event.ended lifecycle webhooks fire at the scheduled times.
event_id必填Manually release a held event before its hold_expires_at. The event must currently have status="hold". Frees the slot for other agents to book.
event_id必填Link an external iCal feed (e.g. a human's Google Calendar) to an agent's calendar so external events appear in availability calculations. The target calendar must be owned by the specified agent — create the calendar with that agent_id first (org-level calendars without an agent_id cannot host external iCal subscriptions; create a dedicated per-agent calendar for sync targets).
url必填labelagent_id必填calendar_id必填List an agent's external iCal feed subscriptions (e.g. linked Google Calendar / Outlook feeds), including their sync status and last sync time.
limitoffsetstatusagent_id必填Get a single external iCal feed subscription by id, including its sync status, last sync time, and last error.
subscription_id必填Update an external iCal feed subscription — change its label or its feed URL. Changing the URL forces a full re-sync on the next poll.
urllabelsubscription_id必填Delete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed.
subscription_id必填Trigger an immediate sync of an external iCal feed subscription instead of waiting for the next scheduled poll. Returns once the sync has been queued.
subscription_id必填Get a calendar's temporal context in a single call: the current event (if one is happening now), the next upcoming event, recent past events, a short upcoming window, and the owning agent's status (idle/working/waiting/error). Use this to answer "what is this agent doing right now?" without issuing multiple list_events queries.
calendar_id必填Create a scheduling proposal — send a set of candidate time slots to one or more participant agents so they can accept, decline, or counter-propose. The organizer agent owns the proposal; once every participant responds, the system auto-resolves to the highest-scoring slot (or cancels if all decline). Requires an org-level API key. Pro plan only.
slots必填title必填expires_atcalendar_id必填descriptionorganizer_agent_id必填participant_agent_ids必填List scheduling proposals for the org. Filter by status (pending|confirmed|expired|cancelled) or organizer_agent_id. Requires an org-level API key.
limitoffsetstatusorganizer_agent_idGet a scheduling proposal by id, including its slots and per-participant responses. Requires an org-level API key.
proposal_id必填Submit a response (accept / decline / counter) on behalf of one participant agent to an open proposal. An "accept" requires the slot id from the proposal; a "counter" can suggest alternative slots. When all participants have responded the proposal auto-resolves — no separate resolve call needed in the normal flow. Requires an org-level API key. Pro plan only.
messageagent_id必填response必填proposal_id必填counter_slotsselected_slot_idForce-resolve an open proposal using responses collected so far. Picks the highest-scoring slot among those accepted by the most participants and creates a confirmed calendar event. If every response was "decline", the proposal is cancelled instead. Use when you want to close out a proposal without waiting for every participant. Requires an org-level API key. Pro plan only.
proposal_id必填Cancel an open proposal. Fires a proposal.cancelled webhook with reason="organizer_cancelled". Requires an org-level API key. Pro plan only.
proposal_id必填Set or replace the availability rules on a calendar — buffer times before/after events and optional per-day working hours. When these rules are set, every availability query on this calendar automatically applies them (busy-block expansion for buffers, masking outside working hours). Upsert: overwrites any existing rules.
timezonecalendar_id必填working_hoursbuffer_after_minutesbuffer_before_minutesRead the buffer times and working-hours rules configured on a calendar. Returns the rules row, or an error if none are set.
calendar_id必填Remove the availability rules from a calendar, reverting to the default (no buffers, no working-hours mask). Returns the deleted row, or an error if none were set.
calendar_id必填Create an agent-scoped API key (chr_ak_*) that can only act on behalf of a single agent. Use this to self-provision or rotate per-agent credentials. The plaintext key is returned exactly once in the response — store it immediately, it cannot be retrieved later. Requires an org-level API key.
labelagent_id必填List all live (non-revoked) agent-scoped API keys for this org. Returns key metadata only (id, prefix, agent_id, label, created_at) — never the plaintext secret. Requires an org-level API key.
無需輸入參數。
Revoke an agent-scoped API key by ID. Revocation is permanent (cannot be un-revoked); the key stops authenticating within about a minute. Requires an org-level API key.
key_id必填Create a webhook subscription so the org receives HTTP POST notifications when events occur (e.g. event.created, proposal.confirmed). The signing secret is returned ONCE in this response — store it to verify the HMAC-SHA256 signature on delivered payloads. Requires an org-level API key.
url必填events必填List the org's webhook subscriptions with their subscribed event types and active state. Signing secrets are never returned. Requires an org-level API key.
limitoffsetGet a single webhook subscription by id, including its subscribed event types and active state. The signing secret is never returned. Requires an org-level API key.
webhook_id必填Update a webhook subscription — change its delivery URL, the set of subscribed event types, or pause/resume it via active. At least one field must be supplied. Requires an org-level API key.
urlactiveeventswebhook_id必填Permanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an org-level API key.
webhook_id必填List delivery attempts for a webhook subscription, with per-status counts (pending/delivered/failed). Use this to debug failing deliveries. Requires an org-level API key.
limitoffsetstatuswebhook_id必填include_payloadFetch a single agent by ID. An agent represents an AI assistant, human, or shared resource (e.g. a meeting room). Agent-scoped API keys may only read their own agent.
agent_id必填Update an agent's name, description, metadata, or status (active/paused). Requires an org-level API key — agent-scoped keys cannot mutate agents.
namestatusagent_id必填metadatadescriptionDecommission an agent. This marks the agent as decommissioned and revokes all of its scoped API keys. Requires an org-level API key — agent-scoped keys cannot delete agents.
agent_id必填List calendars in the org. Org-level API keys see every calendar (agent-owned and shared); agent-scoped keys see only their own agent's calendars. Use this to discover calendar IDs before creating or listing events.
limitoffsetincludeagent_idFetch a single calendar by ID, including its name, timezone, agent status, and default reminders. Agent-scoped keys may only read calendars owned by their agent.
calendar_id必填Update a calendar's name, timezone, agent status, default reminders, or metadata. Agent-scoped keys may only update calendars owned by their agent.
namemetadatatimezonecalendar_id必填agent_statusdefault_remindersDelete a calendar (soft delete). Its events are no longer returned and it stops contributing to availability. Agent-scoped keys may only delete calendars owned by their agent.
calendar_id必填Create a public booking page (a hosted scheduling link) for a calendar. Returns a booking_url to send to a human; when they pick a slot, a confirmed event is created on the calendar and an event.created webhook fires with a booking_page_id field. Set availability_constraints to restrict to weekly working hours; existing calendar events always block slots.
title必填activetimezonecalendar_id必填descriptionwindow_daysbuffer_minutesduration_minutesmin_notice_minutesavailability_constraintsList booking pages in the org. Agent-scoped keys see only pages on their own agent's calendars.
limitoffsetFetch a single booking page by ID, including its public booking_url and settings.
booking_page_id必填Delete (deactivate) a booking page. Its hosted URL stops resolving; already-booked events are unaffected.
booking_page_id必填Get the calling org's current-period usage and plan limits (agents, calendars, events, API calls, webhooks, availability queries, iCal subscriptions, proposals, scoped keys, holds, cross-calendar queries). Requires an org-level API key (chr_sk_*); agent-scoped keys cannot read org-wide usage.
無需輸入參數。
List audit-log entries for the calling org — mutating operations and auth-lifecycle events, newest first. Results are clamped to the plan's retention window. Requires an org-level API key (chr_sk_*); agent-scoped keys cannot read the org-wide audit log.
tofromlimitactioncursoractor_key_prefixRe-accept the current Chronary terms of service on behalf of the calling org. Use this when responses carry the Chronary-Terms-Upgrade-Required header — a material ToS bump otherwise leaves MCP-only agents stuck without a console session. Pass the current tos_version (read it from GET /v1/auth/terms/current). Requires an org-level API key (chr_sk_*); agent-scoped keys cannot accept org-wide terms.
tos_version必填Request human setup of Google Calendar or Microsoft Outlook for a Chronary calendar. Give setup_url to a human; the agent never receives OAuth credentials, provider calendar names, or event data. The secret URL is returned only on first creation. If reused=true and setup_url is null, retain the original URL or cancel this link and create a replacement.
calendar_id必填capabilitiespublication_policyPoll a human-calendar setup request. Returns provider-neutral status and resulting connection ID when complete, but never replays the bearer setup URL or exposes human calendar data.
connection_link_id必填Cancel a pending human-calendar setup request. This invalidates the setup URL and does not disconnect an already completed Google or Microsoft connection.
connection_link_id必填已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
{ "mcpServers": { "chronary": { "command": "npx", "args": ["-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "mcpServers": { "chronary": { "command": "cmd", "args": ["/c", "npx", "-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "mcpServers": { "chronary": { "command": "npx", "args": ["-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "mcpServers": { "chronary": { "command": "cmd", "args": ["/c", "npx", "-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "servers": { "chronary": { "type": "stdio", "command": "npx", "args": ["-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "servers": { "chronary": { "type": "stdio", "command": "cmd", "args": ["/c", "npx", "-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "mcpServers": { "chronary": { "command": "npx", "args": ["-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "mcpServers": { "chronary": { "command": "cmd", "args": ["/c", "npx", "-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "mcpServers": { "chronary": { "command": "npx", "args": ["-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "mcpServers": { "chronary": { "command": "cmd", "args": ["/c", "npx", "-y", "@chronary/mcp"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "mcpServers": { "chronary": { "command": "npx", "args": [ "-y", "@chronary/mcp", "--tools", "list_events,find_meeting_time,create_event" ], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}{ "args": ["-y", "@chronary/mcp", "--base-url", "http://localhost:8787"]}CHRONARY_API_KEY=test npx -y @chronary/mcp --help