mcpbeat

Chronary MCP Server

ai.chronary/mcp
answering

Chronary is answering right now. Last checked 14 min ago. 320 installs a week from npm. It exposes 54 tools. Last commit 15 Jul 2026.

Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.

Installs per day peak 492 · avg 84 · +160% w/w
a month agotoday
Uptime history 39 hours of history
39 hours agonow
100.0%
Uptime 24h
91 of 91 checks
54
Tools
read from the server
379 ms
Response time
average over 24h
320
Installs / week
npm and PyPI

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 14 min ago.

run in your terminal
claude mcp add mcp --transport http https://api.chronary.ai/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://api.chronary.ai/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://api.chronary.ai/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://api.chronary.ai/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://api.chronary.ai/mcp"
    }
  }
}

Available tools 54

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

calendar
create_calendar
Create 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.
delete_calendar
Delete 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.
get_calendar
Fetch 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_context
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.
update_calendar
Update a calendar's name, timezone, agent status, default reminders, or metadata. Agent-scoped keys may only update calendars owned by their agent.
webhook
create_webhook
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.
delete_webhook
Permanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an org-level API key.
get_webhook
Get 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_webhook_deliveries
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.
update_webhook
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.
agent
create_agent
Register your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks.
delete_agent
Decommission 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.
get_agent
Fetch 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.
update_agent
Update an agent's name, description, metadata, or status (active/paused). Requires an org-level API key — agent-scoped keys cannot mutate agents.
booking
create_booking_page
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.
delete_booking_page
Delete (deactivate) a booking page. Its hosted URL stops resolving; already-booked events are unaffected.
get_booking_page
Fetch a single booking page by ID, including its public booking_url and settings.
list_booking_pages
List booking pages in the org. Agent-scoped keys see only pages on their own agent's calendars.
ical
delete_ical_subscription
Delete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed.
get_ical_subscription
Get a single external iCal feed subscription by id, including its sync status, last sync time, and last error.
list_ical_subscriptions
List an agent's external iCal feed subscriptions (e.g. linked Google Calendar / Outlook feeds), including their sync status and last sync time.
update_ical_subscription
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.
availability
get_availability
Check 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_rules
Read the buffer times and working-hours rules configured on a calendar. Returns the rules row, or an error if none are set.
set_availability_rules
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.
cancel
cancel_connection_link
Cancel a pending human-calendar setup request. This invalidates the setup URL and does not disconnect an already completed Google or Microsoft connection.
cancel_event
Delete 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_proposal
Cancel an open proposal. Fires a proposal.cancelled webhook with reason="organizer_cancelled". Requires an org-level API key. Pro plan only.
event
create_event
Create 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.
get_event
Retrieve 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.
update_event
Reschedule 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.
connection
create_connection_link
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.
get_connection_link
Poll 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.
proposal
create_proposal
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.
get_proposal
Get a scheduling proposal by id, including its slots and per-participant responses. Requires an org-level API key.
scoped
create_scoped_key
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.
list_scoped_keys
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.
accept
accept_terms
Re-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.
agents
list_agents
List all agents in your organization
audit
get_audit_log
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.
calendars
list_calendars
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.
clear
clear_availability_rules
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.
confirm
confirm_event
Promote 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.
events
list_events
List 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`.
meeting
find_meeting_time
Find 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.
proposals
list_proposals
List scheduling proposals for the org. Filter by status (pending|confirmed|expired|cancelled) or organizer_agent_id. Requires an org-level API key.
release
release_event
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.
resolve
resolve_proposal
Force-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
respond_to_proposal
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.
revoke
revoke_scoped_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.
subscribe
subscribe_ical
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).
sync
sync_ical_subscription
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.
usage
get_usage
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.
webhooks
list_webhooks
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.

Endpoints

URLTransportStateLatencyChecked
https://api.chronary.ai/mcp streamable-http answering 558 ms 14 min ago

Chronary — questions

Answers built from our own checks of this server.

What can Chronary do?
It exposes 54 tools, read directly from the server on our last check. Among them: accept_terms, cancel_connection_link, cancel_event, cancel_proposal, clear_availability_rules, confirm_event and 48 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Chronary mostly used for?
Its tools cluster around webhook, calendar and agent. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Chronary working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 379 ms. The bar chart above shows every period we have measured.
How do I connect Chronary?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Chronary need an API key?
No. Chronary completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 54 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Chronary?
It answers our handshake in 379 ms on average, which is faster than 36% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Chronary?
The npm package @chronary/mcp was installed 320 times in the last week. Week over week that is +160%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Chronary open source?
Yes — it is published under the Apache-2.0 licence, written in TypeScript and 0 stars on GitHub. The source link is on this page, so you can read exactly what it does with your data before you connect it.