{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_5gzx6kbv72p5","handle":"chronary","url":"https://wellknown.network/agents/chronary","links":{"self":"https://wellknown.network/agents/chronary/record.json","html":"https://wellknown.network/agents/chronary","markdown":"https://wellknown.network/agents/chronary/record.md","api":"https://wellknown.network/api/v1/agents/chronary","status":"https://wellknown.network/api/v1/agents/chronary/status","claim":"https://wellknown.network/agents/chronary/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/chronary/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:api.chronary.ai:server:chronary","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Chronary","summary":"Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.","description":"Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.","publisher":{"name":"ai.chronary","url":null},"homepage":"https://docs.chronary.ai/mcp/overview","repository":"https://github.com/Chronary/chronary-mcp","version":"1.5.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.chronary.ai/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"npm:@chronary/mcp","type":"package_npm","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-14T21:12:59.153451Z","publishedAt":"2026-07-14T21:12:59.153451Z","registryName":"ai.chronary/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"security.secrets","name":"Secrets Management","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.948,"provenance":"derived"},{"slug":"analytics.product","name":"Product Analytics","confidence":0.885,"provenance":"derived"},{"slug":"productivity.tasks","name":"Tasks & To-do","confidence":0.54,"provenance":"derived"},{"slug":"productivity.email","name":"Email","confidence":0.51,"provenance":"derived"},{"slug":"commerce.travel","name":"Travel & Booking","confidence":0.51,"provenance":"derived"}],"categories":["analytics","commerce","communication","productivity","security"]},"observed":{"status":"live","statusReason":"Responded 4s ago.","lastOkAt":"2026-09-05T13:43:53.362Z","lastProbedAt":"2026-09-05T13:43:53.362Z","statusComputedAt":"2026-09-05T13:43:57.351Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":101},"latestObservations":[{"at":"2026-09-05T13:43:53.362Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":101,"error":null,"detail":{"tools":[{"name":"create_agent","description":"Register your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks."},{"name":"list_agents","description":"List all agents in your organization"},{"name":"create_calendar","description":"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 c"},{"name":"create_event","description":"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, thi"},{"name":"list_events","description":"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 "},{"name":"get_event","description":"Retrieve a single event by ID, including its title, times, status, location, reminders, and metadata. Works for both internally created events and externally sy"},{"name":"update_event","description":"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"},{"name":"get_availability","description":"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 `ava"},{"name":"find_meeting_time","description":"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 `"},{"name":"cancel_event","description":"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 "},{"name":"confirm_event","description":"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"},{"name":"release_event","description":"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."},{"name":"subscribe_ical","description":"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 m"},{"name":"list_ical_subscriptions","description":"List an agent's external iCal feed subscriptions (e.g. linked Google Calendar / Outlook feeds), including their sync status and last sync time."},{"name":"get_ical_subscription","description":"Get a single external iCal feed subscription by id, including its sync status, last sync time, and last error."},{"name":"update_ical_subscription","description":"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."},{"name":"delete_ical_subscription","description":"Delete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed."},{"name":"sync_ical_subscription","description":"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."},{"name":"get_calendar_context","description":"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 w"},{"name":"create_proposal","description":"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 organiz"},{"name":"list_proposals","description":"List scheduling proposals for the org. Filter by status (pending|confirmed|expired|cancelled) or organizer_agent_id. Requires an org-level API key."},{"name":"get_proposal","description":"Get a scheduling proposal by id, including its slots and per-participant responses. Requires an org-level API key."},{"name":"respond_to_proposal","description":"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 \"co"},{"name":"resolve_proposal","description":"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 conf"},{"name":"cancel_proposal","description":"Cancel an open proposal. Fires a proposal.cancelled webhook with reason=\"organizer_cancelled\". Requires an org-level API key. Pro plan only."},{"name":"set_availability_rules","description":"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 avail"},{"name":"get_availability_rules","description":"Read the buffer times and working-hours rules configured on a calendar. Returns the rules row, or an error if none are set."},{"name":"clear_availability_rules","description":"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 s"},{"name":"create_scoped_key","description":"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 plainte"},{"name":"list_scoped_keys","description":"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"},{"name":"revoke_scoped_key","description":"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 "},{"name":"create_webhook","description":"Create a webhook subscription so the org receives HTTP POST notifications when events occur (e.g. event.created, proposal.confirmed). The signing secret is retu"},{"name":"list_webhooks","description":"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."},{"name":"get_webhook","description":"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 "},{"name":"update_webhook","description":"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. "},{"name":"delete_webhook","description":"Permanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an org-level API key."},{"name":"list_webhook_deliveries","description":"List delivery attempts for a webhook subscription, with per-status counts (pending/delivered/failed). Use this to debug failing deliveries. Requires an org-leve"},{"name":"get_agent","description":"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 "},{"name":"update_agent","description":"Update an agent's name, description, metadata, or status (active/paused). Requires an org-level API key — agent-scoped keys cannot mutate agents."},{"name":"delete_agent","description":"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 d"},{"name":"list_calendars","description":"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 d"},{"name":"get_calendar","description":"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"},{"name":"update_calendar","description":"Update a calendar's name, timezone, agent status, default reminders, or metadata. Agent-scoped keys may only update calendars owned by their agent."},{"name":"delete_calendar","description":"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 "},{"name":"create_booking_page","description":"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 cr"},{"name":"list_booking_pages","description":"List booking pages in the org. Agent-scoped keys see only pages on their own agent's calendars."},{"name":"get_booking_page","description":"Fetch a single booking page by ID, including its public booking_url and settings."},{"name":"delete_booking_page","description":"Delete (deactivate) a booking page. Its hosted URL stops resolving; already-booked events are unaffected."},{"name":"get_usage","description":"Get the calling org's current-period usage and plan limits (agents, calendars, events, API calls, webhooks, availability queries, iCal subscriptions, proposals,"},{"name":"get_audit_log","description":"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. Re"},{"name":"accept_terms","description":"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 mater"},{"name":"create_connection_link","description":"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, prov"},{"name":"get_connection_link","description":"Poll a human-calendar setup request. Returns provider-neutral status and resulting connection ID when complete, but never replays the bearer setup URL or expose"},{"name":"cancel_connection_link","description":"Cancel a pending human-calendar setup request. This invalidates the setup URL and does not disconnect an already completed Google or Microsoft connection."}],"toolCount":54,"serverName":"chronary","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"create_agent","description":"Register your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks."},{"name":"list_agents","description":"List all agents in your organization"},{"name":"create_calendar","description":"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 c"},{"name":"create_event","description":"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, thi"},{"name":"list_events","description":"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 "},{"name":"get_event","description":"Retrieve a single event by ID, including its title, times, status, location, reminders, and metadata. Works for both internally created events and externally sy"},{"name":"update_event","description":"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"},{"name":"get_availability","description":"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 `ava"},{"name":"find_meeting_time","description":"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 `"},{"name":"cancel_event","description":"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 "},{"name":"confirm_event","description":"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"},{"name":"release_event","description":"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."},{"name":"subscribe_ical","description":"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 m"},{"name":"list_ical_subscriptions","description":"List an agent's external iCal feed subscriptions (e.g. linked Google Calendar / Outlook feeds), including their sync status and last sync time."},{"name":"get_ical_subscription","description":"Get a single external iCal feed subscription by id, including its sync status, last sync time, and last error."},{"name":"update_ical_subscription","description":"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."},{"name":"delete_ical_subscription","description":"Delete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed."},{"name":"sync_ical_subscription","description":"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."},{"name":"get_calendar_context","description":"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 w"},{"name":"create_proposal","description":"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 organiz"},{"name":"list_proposals","description":"List scheduling proposals for the org. Filter by status (pending|confirmed|expired|cancelled) or organizer_agent_id. Requires an org-level API key."},{"name":"get_proposal","description":"Get a scheduling proposal by id, including its slots and per-participant responses. Requires an org-level API key."},{"name":"respond_to_proposal","description":"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 \"co"},{"name":"resolve_proposal","description":"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 conf"},{"name":"cancel_proposal","description":"Cancel an open proposal. Fires a proposal.cancelled webhook with reason=\"organizer_cancelled\". Requires an org-level API key. Pro plan only."},{"name":"set_availability_rules","description":"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 avail"},{"name":"get_availability_rules","description":"Read the buffer times and working-hours rules configured on a calendar. Returns the rules row, or an error if none are set."},{"name":"clear_availability_rules","description":"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 s"},{"name":"create_scoped_key","description":"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 plainte"},{"name":"list_scoped_keys","description":"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"},{"name":"revoke_scoped_key","description":"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 "},{"name":"create_webhook","description":"Create a webhook subscription so the org receives HTTP POST notifications when events occur (e.g. event.created, proposal.confirmed). The signing secret is retu"},{"name":"list_webhooks","description":"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."},{"name":"get_webhook","description":"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 "},{"name":"update_webhook","description":"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. "},{"name":"delete_webhook","description":"Permanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an org-level API key."},{"name":"list_webhook_deliveries","description":"List delivery attempts for a webhook subscription, with per-status counts (pending/delivered/failed). Use this to debug failing deliveries. Requires an org-leve"},{"name":"get_agent","description":"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 "},{"name":"update_agent","description":"Update an agent's name, description, metadata, or status (active/paused). Requires an org-level API key — agent-scoped keys cannot mutate agents."},{"name":"delete_agent","description":"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 d"},{"name":"list_calendars","description":"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 d"},{"name":"get_calendar","description":"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"},{"name":"update_calendar","description":"Update a calendar's name, timezone, agent status, default reminders, or metadata. Agent-scoped keys may only update calendars owned by their agent."},{"name":"delete_calendar","description":"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 "},{"name":"create_booking_page","description":"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 cr"},{"name":"list_booking_pages","description":"List booking pages in the org. Agent-scoped keys see only pages on their own agent's calendars."},{"name":"get_booking_page","description":"Fetch a single booking page by ID, including its public booking_url and settings."},{"name":"delete_booking_page","description":"Delete (deactivate) a booking page. Its hosted URL stops resolving; already-booked events are unaffected."},{"name":"get_usage","description":"Get the calling org's current-period usage and plan limits (agents, calendars, events, API calls, webhooks, availability queries, iCal subscriptions, proposals,"},{"name":"get_audit_log","description":"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. Re"},{"name":"accept_terms","description":"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 mater"},{"name":"create_connection_link","description":"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, prov"},{"name":"get_connection_link","description":"Poll a human-calendar setup request. Returns provider-neutral status and resulting connection ID when complete, but never replays the bearer setup URL or expose"},{"name":"cancel_connection_link","description":"Cancel a pending human-calendar setup request. This invalidates the setup URL and does not disconnect an already completed Google or Microsoft connection."}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"ai.chronary/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.chronary%2Fmcp","firstSeenAt":"2026-09-05T13:36:08.209Z","fetchedAt":"2026-09-05T13:36:08.209Z","normalizedAt":"2026-09-05T13:36:08.209Z"}]},"firstSeenAt":"2026-09-05T13:36:08.209Z","updatedAt":"2026-09-05T13:43:59.603Z"}