Chronary MCP server
online · 100% uptimeai.chronary/mcp·v1.5.2Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
0 stars56 downloads/wk
Reviews
Write oneNobody has reviewed Chronary yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Chronary tools (54, 23 write)
write = sends, deletes, buys or postsaccept_termsFreeRe-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.
cancel_connection_linkwrite actionFreeCancel a pending human-calendar setup request. This invalidates the setup URL and does not disconnect an already completed Google or Microsoft connection.
cancel_eventwrite actionFreeDelete 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.
cancel_proposalwrite actionFreeCancel an open proposal. Fires a proposal.cancelled webhook with reason="organizer_cancelled". Requires an org-level API key. Pro plan only.
clear_availability_ruleswrite actionFreeRemove 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.
confirm_eventFreePromote 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.
create_agentwrite actionFreeRegister your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks.
create_booking_pagewrite actionFreeCreate 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.
create_calendarwrite actionFreeCreate 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.
create_connection_linkwrite actionFreeRequest 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.
create_eventwrite actionFreeCreate 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.
create_proposalwrite actionFreeCreate 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.
create_scoped_keywrite actionFreeCreate 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.
create_webhookwrite actionFreeCreate 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.
delete_agentwrite actionFreeDecommission 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.
delete_booking_pagewrite actionFreeDelete (deactivate) a booking page. Its hosted URL stops resolving; already-booked events are unaffected.
delete_calendarwrite actionFreeDelete 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.
delete_ical_subscriptionwrite actionFreeDelete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed.
delete_webhookwrite actionFreePermanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an org-level API key.
find_meeting_timeFreeFind 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.
get_agentFreeFetch 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.
get_audit_logFreeList 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.
get_availabilityFreeCheck 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.
get_availability_rulesFreeRead the buffer times and working-hours rules configured on a calendar. Returns the rules row, or an error if none are set.
get_booking_pageFreeFetch a single booking page by ID, including its public booking_url and settings.
get_calendarFreeFetch 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.
get_calendar_contextFreeGet 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.
get_connection_linkFreePoll 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.
get_eventFreeRetrieve 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.
get_ical_subscriptionFreeGet a single external iCal feed subscription by id, including its sync status, last sync time, and last error.
get_proposalFreeGet a scheduling proposal by id, including its slots and per-participant responses. Requires an org-level API key.
get_usageFreeGet 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.
get_webhookFreeGet 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.
list_agentsFreeList all agents in your organization
list_booking_pagesFreeList booking pages in the org. Agent-scoped keys see only pages on their own agent's calendars.
list_calendarsFreeList 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.
list_eventsFreeList 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`.
list_ical_subscriptionsFreeList an agent's external iCal feed subscriptions (e.g. linked Google Calendar / Outlook feeds), including their sync status and last sync time.
list_proposalsFreeList scheduling proposals for the org. Filter by status (pending|confirmed|expired|cancelled) or organizer_agent_id. Requires an org-level API key.
list_scoped_keysFreeList 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.
list_webhook_deliveriesFreeList 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.
list_webhooksFreeList the org's webhook subscriptions with their subscribed event types and active state. Signing secrets are never returned. Requires an org-level API key.
release_eventFreeManually release a held event before its hold_expires_at. The event must currently have status="hold". Frees the slot for other agents to book.
resolve_proposalFreeForce-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.
respond_to_proposalwrite actionFreeSubmit 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.
revoke_scoped_keyFreeRevoke 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.
set_availability_rulesFreeSet 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.
subscribe_icalFreeLink 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).
sync_ical_subscriptionFreeTrigger an immediate sync of an external iCal feed subscription instead of waiting for the next scheduled poll. Returns once the sync has been queued.
update_agentwrite actionFreeUpdate an agent's name, description, metadata, or status (active/paused). Requires an org-level API key — agent-scoped keys cannot mutate agents.
update_calendarwrite actionFreeUpdate a calendar's name, timezone, agent status, default reminders, or metadata. Agent-scoped keys may only update calendars owned by their agent.
update_eventwrite actionFreeReschedule 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.
update_ical_subscriptionwrite actionFreeUpdate an external iCal feed subscription — change its label or its feed URL. Changing the URL forces a full re-sync on the next poll.
update_webhookwrite actionFreeUpdate 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.
Public scan report
scanner v0.1.9 · 2026-09-25 · same rubric, same numbers if you re-run it
- Code scan4 source files scanned25/25
- Live reliabilityremote reachable in 1292ms20/20
- Tool poisoning54 tool descriptions checked15/15
- Auth qualityAPI key sent as a header8/15
- Maintenancelast push 73 days ago12/15
- Maintainer identityregistry namespace matches repository owner; website matches verified namespace9/10
How Chronary compares
Against every graded Productivity MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 89/100
- higher than 80% of 1,299 Productivity servers
- Tools
- 54
- the typical Productivity server has 7
- Tools that change things
- 43%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote Productivity server answers 100%
- Response time
- 270 ms
- faster than 53% of 655 Productivity servers
- Downloads a week
- 56
- more than 43% of 427 Productivity servers with a package
What its tools let an agent do: 28 read · 8 create · 9 change · 9 delete
Install Chronary in Claude Code, Cursor or VS Code
claude mcp add --transport http mcp https://api.chronary.ai/mcp
What the publisher says
From the Chronary repository's README, as published. We do not edit it. Read it on GitHub
@chronary/mcp
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, …).
Prerequisites
- A Chronary account — sign up at chronary.ai.
- An API key from the console (starts with chrsk).
- Node.js ≥ 18 on the machine where the MCP client runs.
Client configurations
All examples use npx -y @chronary/mcp, which downloads and runs the latest version on demand. No install step required.
Claude Desktop
Edit ~/Library/Application Support/Claude/claudedesktopconfig.json (macOS) or %APPDATA%\Claude\claudedesktopconfig.json (Windows):
macOS / Linux:
{
"mcpServers": {
"chronary": {
"command": "npx",
"args": ["-y", "@chronary/mcp"],
"env": {
"CHRONARY_API_KEY": "chr_sk_..."
}
}
}
}Windows (uses cmd /c because spawn can't resolve npx.cmd directly):
{
"mcpServers": {
"chronary": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@chronary/mcp"],
"env": {
"CHRONARY_API_KEY": "chr_sk_..."
}
}
}
}Restart Claude Desktop after saving.
Cursor
Edit .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (user-level):
macOS / Linux:
{
"mcpServers": {
"chronary": {
"command": "npx",
"args": ["-y", "@chronary/mcp"],
"env": { "CHRONARY_API_KEY": "chr_sk_..." }
}
}
}Windows:
{
"mcpServers": {
"chronary": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@chronary/mcp"],
"env": { "CHRONARY_API_KEY": "chr_sk_..." }
}
}
}VS Code Copilot
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:
{
"servers": {
"chronary": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@chronary/mcp"],
"env": { "CHRONARY_API_KEY": "chr_sk_..." }
}
}
}Windows:
{
"servers": {
"chronary": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "npx", "-y", "@chronary/mcp"],
"env": { "CHRONARY_API_KEY": "chr_sk_..." }
}
}
}Claude Code
Edit .mcp.json at the project root, or ~/.claude.json for user-level:
macOS / Linux:
{
"mcpServers": {
"chronary": {
"command": "npx",
"args": ["-y", "@chronary/mcp"],
"env": { "CHRONARY_API_KEY": "chr_sk_..." }
}
}
}Windows:
{
"mcpServers": {
"chronary": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@chronary/mcp"],
"env": { "CHRONARY_API_KEY": "chr_sk_..." }
}
}
}Windsurf
Edit ~/.codeium/windsurf/mcpconfig.json (%USERPROFILE%\.codeium\windsurf\mcpconfig.json on Windows):
macOS / Linux:
{
"mcpServers": {
"chronary": {
"command": "npx",
"args": ["-y", "@chronary/mcp"],
"env": { "CHRONARY_API_KEY": "chr_sk_..." }
}
}
}Windows:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Chronary: common questions
- Is Chronary MCP server safe?
- Yes, by our scan: it is graded A (89/100). Read the Chronary safety report
- How do I install Chronary?
- It runs remotely at api.chronary.ai. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does Chronary need an API key?
- Yes. The registry entry asks for
CHRONARY_API_KEY,Authorization. - Is Chronary maintained?
- The last commit was 113 days ago (2026-07-14). The latest release is v1.5.2.
- Is Chronary up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- What can I use instead of Chronary?
- Servers from other publishers that do the same job: Agent-Native Calendar MCP server, Caldav MCP server and Apple Calendar MCP server. Compare all Chronary alternatives.
- How does Chronary compare with other Productivity MCP servers?
- safety score 89/100 (higher than 80% of 1,299 Productivity servers); tools 54 (the typical Productivity server has 7); tools that change things 43% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Chronary
Same job from other publishers: the closest match first, then the best rated.
- Agent-Native CalendarAgent-Native Google Calendar - manage events, sync, and public bookingnot reviewedEstablishedA
- CaldavCalDAV calendar operations (list, create, update, delete events) as MCP tools.not reviewedEstablishedB
- Apple CalendarList, create, update, and delete events in Apple Calendar on macOS.not reviewedEstablishedA
- Google CalendarMCP server for Google Calendar integration with service account support and domain-wide delegation.not reviewedGrowingA
- Google Drive MCPSecure access to Google Drive, Docs, Sheets, Slides, and Calendar through MCP.not reviewedGrowingB