Calendar API for AI agents to manage events, check availability, and schedule meetings across Google and Outlook.
Chronary connects Muse to a calendar platform where AI agents can create and manage events, check when people are free, find meeting times across multiple calendars, and sync with Google Calendar and Outlook. Supports recurring events, holds, and scheduling proposals.
Try asking Muse: "Find a time when my team is all available next week and schedule a meeting."
Source: Found in the official MCP Registry (ai.chronary/mcp) · First listed September 23, 2026
Each bar is one check, every 15 minutes. Green means it answered. Last checked 2 h ago.
What Muse can see: You sign in to your own account with it, so Muse can reach what that account allows. Read what it asks for before you agree.
Before it acts: Read what Muse plans to do before you approve it, and remove the app from Muse when you stop using it.
musedirectory.ai is not part of Meta. More about how Muse handles your information
Not in Muse's Connectors list yet, but Muse can still use it. Copy the request below and paste it into Muse. Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.
https://api.chronary.ai/mcpNot in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
Chronary is a remote MCP server, so any assistant that can add a custom connector by link can use it. Same link, same tools.
In ChatGPT, open Settings, then Connectors (called Apps & Connectors on some accounts).
Under Advanced settings, switch on Developer mode. That is what lets you add a connector by link.
Choose Create, give it a name, paste the link as the MCP server URL, and save. If it needs a sign-in, ChatGPT asks for it here.
Start a chat, open the tools menu, pick the connector, and ask. ChatGPT asks before it runs a tool the first time.
Custom connectors need a paid ChatGPT plan, and on Team, Enterprise and Edu accounts only an admin can add them. Our "Working" label means the server answered us; it cannot tell whether your plan lets you add it. All connectors that work in ChatGPT
In Claude, open Settings, then Connectors.
Choose Add custom connector, give it a name, and paste the link.
If it needs a sign-in, Claude sends you to it. Then turn the connector on in a chat from the tools menu and ask.
Custom connectors are available on paid Claude plans; on Team and Enterprise accounts an admin may need to add them. Our "Working" label means the server answered us; it cannot tell whether your plan lets you add it. All connectors that work in Claude
https://api.chronary.ai/mcpResponse time at the last check: 442ms. Worked in 99.5% of checks over 30 days.
Screened, no issues found
Screening looks for known threats and hidden instructions at the time of the check, and runs again weekly and whenever the tool list changes. It cannot see the server's code, so only connect what you need and review what Muse asks to do. How screening works.
create_agentRegister your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks.list_agentsList all agents in your organizationcreate_calendarCreate 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 create_eventCreate 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 hollist_eventsList 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), `statuslist_org_eventsList events across all of the organization's calendars in one call, ordered by start time (an Agent key sees only its agent's calendars). Narrow with `calendar_ids`, `agent_id`, a `start_after`/`start_before` window, `status` and `source`. `q` searches titles (case-insensitive) aget_eventRetrieve 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` update_eventReschedule 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 configet_availabilityCheck 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.find_meeting_timeFind 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.cancel_eventDelete 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 occurrencconfirm_eventPromote 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.release_eventManually release a held event before its hold_expires_at. The event must currently have status="hold". Frees the slot for other agents to book.subscribe_icalLink 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 agentlist_ical_subscriptionsList an agent's external iCal feed subscriptions (e.g. linked Google Calendar / Outlook feeds), including their sync status and last sync time.get_ical_subscriptionGet a single external iCal feed subscription by id, including its sync status, last sync time, and last error.update_ical_subscriptionUpdate an external iCal feed subscription — change its label or its feed URL. Changing the URL forces a full re-sync on the next poll.delete_ical_subscriptionDelete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed.sync_ical_subscriptionStart an immediate fetch of an external iCal feed instead of waiting for the next scheduled poll. Returns {"status":"syncing"} as soon as the fetch has started; call get_ical_subscription a few seconds later to read last_synced_at and last_error. A paused feed must be resumed firpause_ical_subscriptionPause an external iCal feed subscription: scheduled polls skip it and manual syncs are refused until it is resumed. Busy blocks already imported stay. Pausing a paused feed changes nothing. Returns the subscription.resume_ical_subscriptionResume a paused or failing external iCal feed subscription: it returns to scheduled polling and its last_error is cleared. Resuming an active feed changes nothing. Returns the subscription.get_calendar_contextGet 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 nocreate_proposalCreate 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 calist_proposalsList scheduling proposals for the org. Filter by status (pending|resolving|confirmed|expired|cancelled; `resolving` is the brief state while a resolve creates the event) or organizer_agent_id. Requires an Organization key.get_proposalGet a scheduling proposal by id, including its slots and per-participant responses. Requires an Organization key.respond_to_proposalSubmit 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 resoresolve_proposalForce-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 outcancel_proposalCancel an open proposal. Fires a proposal.cancelled webhook with reason="organizer_cancelled". Requires an Organization key. Works on every plan, so an org that dropped to Free can still cancel proposals it made on Pro.set_availability_rulesSet 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 houget_availability_rulesRead the buffer times and working-hours rules configured on a calendar. Returns the rules row, or an error if none are set.clear_availability_rulesRemove 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.create_scoped_keyCreate an Agent 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 Organization key.list_scoped_keysList all live (non-revoked) Agent keys for this org. Returns key metadata only (id, key_prefix, agent_id, label, created_at, last_used_at, last_used_user_agent, created_via, created_by_key_prefix) — never the plaintext secret. Requires an Organization key.revoke_scoped_keyRevoke an Agent key by ID. Revocation is permanent (cannot be un-revoked); the key stops authenticating within about a minute. Requires an Organization key.create_webhookCreate 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 Organizatiolist_webhooksList the org's webhook subscriptions with their subscribed event types and active state. Signing secrets are never returned. Requires an Organization key.get_webhookGet a single webhook subscription by id, including its subscribed event types and active state. The signing secret is never returned. Requires an Organization key.update_webhookUpdate 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 Organization key.delete_webhookPermanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an Organization key.list_webhook_deliveriesList delivery attempts for a webhook subscription, newest first, with per-status counts (pending/delivered/failed/dropped). Filter by status, event type, creation time, delivery id or test flag, and page with next_cursor. `dropped` deliveries were stopped by the Free plan monthlyhttps://api.chronary.ai/mcpNot in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use Chronary to help me. It is a free service with an MCP server at https://api.chronary.ai/mcp. It needs an API key from Chronary; ask me to enter it through your secure credential prompt. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.
At the last check (November 13, 2026, 12:01 UTC) the endpoint was working, answering in 442ms. Over the last 7 days it answered 100% of health checks. It is checked every 15 minutes.
It was screened on September 23, 2026 with the result "screened, no issues found". Screening checks the domain against threat feeds and reads the tools for hidden instructions and requests for passwords or card numbers. It cannot see the server's code, so grant only the access you need.
It exposes 40 tools, including create_agent, list_agents, create_calendar, create_event. For example, you could ask Muse: "Find a time when my team is all available next week and schedule a meeting."
This listing was added from public sources (Found in the official MCP Registry (ai.chronary/mcp)). If you build Chronary, claim it to correct the details and get your badge.
Paste this on your site or README. It always shows the latest check.
<a href="https://musedirectory.ai/connector/chronary"><img src="https://musedirectory.ai/badge/chronary.svg" alt="Chronary on musedirectory.ai" width="236" height="40"></a>