Servidor MCP

Chronary

ai.chronary/mcp
Negocio y operaciones Productividad Público y accesible MCP 2025-11-25

Qué hace este MCP

Manages calendars, availability, events, scheduling proposals, booking pages, human calendar connections, and webhooks.

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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tos_version'], 'properties': {'tos_version': {'type': 'string', 'minLength': 1, 'description': 'The terms-of-service version to accept; must match the current version'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['connection_link_id'], 'properties': {'connection_link_id': {'type': 'string', 'format': 'starts_with', 'pattern': '^csl_.*', 'description': 'Connection setup link ID'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['event_id'], 'properties': {'event_id': {'type': 'string', 'description': 'Event ID to cancel'}, 'calendar_id': {'type': 'string', 'description': 'Calendar ID that owns the event. Optional — if omitted the calendar is resolved from the event. Matches the asymmetry with confirm_event / release_event which never required this arg.'}, 'occurrence_start': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'For recurring events only: ISO 8601 start of the single occurrence to cancel. The rest of the series is unaffected.'}}}
cancel_proposal
Cancel an open proposal. Fires a proposal.cancelled webhook with reason="organizer_cancelled". Requires an org-level API key. Pro plan only.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposal_id'], 'properties': {'proposal_id': {'type': 'string', 'description': 'Proposal to cancel'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id'], 'properties': {'calendar_id': {'type': 'string', 'description': 'Calendar whose rules should be cleared'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['event_id'], 'properties': {'event_id': {'type': 'string', 'description': 'Event ID of the hold to confirm'}}}
create_agent
Register your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Display name for the agent'}, 'type': {'enum': ['ai', 'human', 'resource'], 'type': 'string', 'description': 'Agent type'}, 'description': {'type': 'string', 'description': 'Optional description'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id', 'title'], 'properties': {'title': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Meeting title shown on the page.'}, 'active': {'type': 'boolean', 'description': 'Whether the page accepts bookings (default true).'}, 'timezone': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'IANA timezone for display + working hours (default UTC).'}, 'calendar_id': {'type': 'string', 'description': 'Calendar a booking resolves to (from create_calendar/list_calendars).'}, 'description': {'type': 'string', 'maxLength': 2000, 'description': 'Optional description shown to the booker.'}, 'window_days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'How far ahead bookings are allowed (default 14).'}, 'buffer_minutes': {'type': 'integer', 'maximum': 120, 'minimum': 0, 'description': 'Padding before/after existing events (default 0).'}, 'duration_minutes': {'type': 'integer', 'maximum': 480, 'minimum': 5, 'description': 'Slot length in minutes (default 30).'}, 'min_notice_minutes': {'type': 'integer', 'maximum': 40320, 'minimum': 0, 'description': 'Minimum lead time before a bookable slot (default 0).'}, 'availability_constraints': {'anyOf': [{'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string'}, 'start': {'type': 'string'}}}}, {'type': 'null'}], 'description': 'Weekly working hours, e.g. {"mon":{"start":"09:00","end":"17:00"}}. Omit/null for any time in the window.'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'timezone'], 'properties': {'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Calendar name'}, 'agent_id': {'type': 'string', 'description': 'Agent ID to own this calendar (omit for org-level)'}, 'timezone': {'type': 'string', 'minLength': 1, 'description': 'IANA timezone (e.g. America/New_York)'}, 'default_reminders': {'anyOf': [{'type': 'array', 'items': {'type': 'integer', 'maximum': 40320, 'minimum': 1}, 'maxItems': 5}, {'type': 'null'}], 'description': "Default reminder offsets in minutes before start, inherited by events on this calendar that don't set their own. Omit or null to use the system default (10 min); [] for no reminders."}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id'], 'properties': {'calendar_id': {'type': 'string', 'format': 'starts_with', 'pattern': '^cal_.*', 'description': 'Chronary calendar whose owning agent will receive authorized availability'}, 'capabilities': {'type': 'array', 'items': {'enum': ['availability', 'publishing'], 'type': 'string'}, 'default': ['availability'], 'maxItems': 2, 'minItems': 1, 'description': 'Request opaque availability, plus optional opt-in event publishing permission'}, 'publication_policy': {'enum': ['none', 'confirmed', 'confirmed_tentative'], 'type': 'string', 'default': 'none', 'description': 'Desired publishing policy; a human still chooses the destination'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id', 'title', 'start_time', 'end_time'], 'properties': {'title': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Event title'}, 'status': {'enum': ['confirmed', 'tentative', 'hold'], 'type': 'string', 'description': 'Event status. "hold" creates a tentative reservation that auto-expires at hold_expires_at. Defaults to "confirmed".'}, 'all_day': {'type': 'boolean', 'default': False, 'description': 'Whether this is an all-day event'}, 'end_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'End time (ISO 8601)'}, 'reminders': {'anyOf': [{'type': 'array', 'items': {'type': 'integer', 'maximum': 40320, 'minimum': 1}, 'maxItems': 5}, {'type': 'null'}], 'description': 'Reminder offsets in minutes before start_time (e.g. [10, 1440]). Each fires an event.reminder webhook and shows as an alarm in the iCal feed. Omit or null to inherit the calendar default (then the system default of 10 min); [] for no reminders.'}, 'start_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Start time (ISO 8601)'}, 'calendar_id': {'type': 'string', 'description': 'Calendar ID to add the event to'}, 'description': {'type': 'string', 'description': 'Optional event description'}, 'hold_priority': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only valid with status="hold". Higher-priority overlapping holds pre-empt lower-priority ones. Defaults to 0.'}, 'hold_expires_at': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Required when status="hold". ISO 8601 timestamp 30s-15min in the future. Auto-releases the hold when reached.'}, 'recurrence_rule': {'type': 'string', 'maxLength': 256, 'description': 'Make this a recurring series (RFC 5545 RRULE subset, no "RRULE:" prefix), e.g. "FREQ=WEEKLY;BYDAY=MO,WE;COUNT=12". Supports FREQ=DAILY/WEEKLY/MONTHLY/YEARLY, INTERVAL, COUNT (max 730) or UNTIL, BYDAY (weekly list or monthly ordinal like 2TU/-1FR), BYMONTHDAY (1-28 or -1). start_time must match the rule pattern; expansion is UTC-only. Not allowed with status="hold". Free plan: max 5 recurring events, series must end within 90 days.'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['title', 'organizer_agent_id', 'participant_agent_ids', 'calendar_id', 'slots'], 'properties': {'slots': {'type': 'array', 'items': {'type': 'object', 'required': ['start_time', 'end_time'], 'properties': {'weight': {'type': 'number', 'default': 1, 'maximum': 10, 'minimum': 0, 'description': 'Preference for this slot, 0–10 (higher = more preferred). Used to rank candidate slots when the proposal is resolved. Defaults to 1.'}, 'end_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Slot end time (ISO 8601), after start_time'}, 'start_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Slot start time (ISO 8601)'}, 'calendar_id': {'type': 'string', 'description': "Calendar to create the event on if this slot is chosen. Defaults to the proposal's top-level calendar_id."}}}, 'maxItems': 20, 'minItems': 1, 'description': 'Candidate time slots (up to 20)'}, 'title': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Short description of what the meeting is about'}, 'expires_at': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Auto-cancel cutoff if unresolved'}, 'calendar_id': {'type': 'string', 'description': 'Calendar the resolved event will be created on'}, 'description': {'type': 'string', 'maxLength': 5000, 'description': 'Longer context/agenda'}, 'organizer_agent_id': {'type': 'string', 'description': 'Agent ID proposing the meeting'}, 'participant_agent_ids': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1, 'description': 'Agent IDs invited to respond'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'label': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Human-readable label for the key'}, 'agent_id': {'type': 'string', 'pattern': '^agt_', 'description': 'Agent ID this key is scoped to'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url', 'events'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'HTTPS endpoint that will receive event deliveries'}, 'events': {'type': 'array', 'items': {'enum': ['agent.created', 'agent.updated', 'event.created', 'event.updated', 'event.deleted', 'event.started', 'event.ended', 'event.reminder', 'event.hold_created', 'event.hold_expired', 'event.hold_released', 'event.hold_confirmed', 'proposal.created', 'proposal.responded', 'proposal.confirmed', 'proposal.expired', 'proposal.cancelled', 'webhook.deactivated'], 'type': 'string'}, 'minItems': 1, 'description': 'Event types to subscribe to'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'description': 'Agent ID to decommission'}}}
delete_booking_page
Delete (deactivate) a booking page. Its hosted URL stops resolving; already-booked events are unaffected.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['booking_page_id'], 'properties': {'booking_page_id': {'type': 'string', 'description': 'Booking page ID to delete (bkp_...)'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id'], 'properties': {'calendar_id': {'type': 'string', 'description': 'Calendar ID to delete'}}}
delete_ical_subscription
Delete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subscription_id'], 'properties': {'subscription_id': {'type': 'string', 'description': 'iCal subscription ID to delete'}}}
delete_webhook
Permanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an org-level API key.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhook_id'], 'properties': {'webhook_id': {'type': 'string', 'description': 'Webhook subscription to delete'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'end': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Search range end (ISO 8601). Alias: end_time.'}, 'start': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Search range start (ISO 8601). Alias: start_time.'}, 'agents': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': 'Array of agent IDs to find common free time for. All agents must be free during the returned slots. Alias: agent_ids.'}, 'duration': {'enum': ['15m', '30m', '45m', '1h', '2h'], 'type': 'string', 'description': 'Requested slot length (15m/30m/45m/1h/2h). Preferred over the deprecated slot_duration. Defaults to 30m.'}, 'end_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Alias for `end` (matches REST events naming).'}, 'agent_ids': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': 'Alias for `agents` (matches REST/scheduling-proposal naming).'}, 'calendars': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Additional shared calendar IDs to treat as busy'}, 'start_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Alias for `start` (matches REST events naming).'}, 'include_busy': {'type': 'boolean', 'default': False, 'description': 'Include per-agent busy blocks in response'}, 'slot_duration': {'enum': ['15m', '30m', '45m', '1h', '2h'], 'type': 'string', 'description': 'Deprecated alias for `duration` — minimum slot length. Prefer `duration`.'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'description': 'Agent ID to fetch'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'to': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'End of the window (ISO 8601)'}, 'from': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Start of the window (ISO 8601). Silently clamped to the plan retention window if older.'}, 'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Max results to return (default 50)'}, 'action': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Filter by action name (e.g. event.created)'}, 'cursor': {'type': 'string', 'maxLength': 256, 'minLength': 1, 'description': 'Opaque pagination cursor from a previous response'}, 'actor_key_prefix': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Filter by the API key prefix that performed the action'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'end': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Range end (ISO 8601). Alias: end_time.'}, 'start': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Range start (ISO 8601). Alias: start_time.'}, 'agent_id': {'type': 'string', 'description': 'Agent ID to check availability for'}, 'duration': {'enum': ['15m', '30m', '45m', '1h', '2h'], 'type': 'string', 'description': 'Requested slot length (15m/30m/45m/1h/2h). Preferred over the deprecated slot_duration. Defaults to 30m.'}, 'end_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Alias for `end` (matches REST events naming).'}, 'start_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Alias for `start` (matches REST events naming).'}, 'include_busy': {'type': 'boolean', 'default': False, 'description': 'Include busy blocks in response'}, 'slot_duration': {'enum': ['15m', '30m', '45m', '1h', '2h'], 'type': 'string', 'description': 'Deprecated alias for `duration` — minimum slot length. Prefer `duration`.'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id'], 'properties': {'calendar_id': {'type': 'string', 'description': 'Calendar to read'}}}
get_booking_page
Fetch a single booking page by ID, including its public booking_url and settings.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['booking_page_id'], 'properties': {'booking_page_id': {'type': 'string', 'description': 'Booking page ID to fetch (bkp_...)'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id'], 'properties': {'calendar_id': {'type': 'string', 'description': 'Calendar ID to fetch'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id'], 'properties': {'calendar_id': {'type': 'string', 'description': 'Calendar ID'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['connection_link_id'], 'properties': {'connection_link_id': {'type': 'string', 'format': 'starts_with', 'pattern': '^csl_.*', 'description': 'Connection setup link ID'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['event_id'], 'properties': {'event_id': {'type': 'string', 'description': 'Event ID to retrieve'}, 'calendar_id': {'type': 'string', 'description': 'Calendar ID that owns the event. Optional — if omitted the calendar is resolved from the event.'}}}
get_ical_subscription
Get a single external iCal feed subscription by id, including its sync status, last sync time, and last error.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subscription_id'], 'properties': {'subscription_id': {'type': 'string', 'description': 'iCal subscription ID to fetch'}}}
get_proposal
Get a scheduling proposal by id, including its slots and per-participant responses. Requires an org-level API key.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposal_id'], 'properties': {'proposal_id': {'type': 'string', 'description': 'Proposal to fetch'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhook_id'], 'properties': {'webhook_id': {'type': 'string', 'description': 'Webhook subscription to fetch'}}}
list_agents
List all agents in your organization
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'enum': ['ai', 'human', 'resource'], 'type': 'string', 'description': 'Filter by agent type'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max results to return'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination offset'}, 'status': {'enum': ['active', 'paused', 'decommissioned'], 'type': 'string', 'description': 'Filter by status'}}}
list_booking_pages
List booking pages in the org. Agent-scoped keys see only pages on their own agent's calendars.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max results to return'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination offset'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max results to return'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination offset'}, 'include': {'enum': ['all'], 'type': 'string', 'description': 'Pass "all" to include calendars across all agents (org keys only)'}, 'agent_id': {'type': 'string', 'description': 'Filter to calendars owned by this agent. Org keys only — agent-scoped keys are always limited to their own agent and ignore this.'}}}
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`.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max results to return'}, 'expand': {'type': 'boolean', 'default': False, 'description': 'Expand recurring series into individual occurrence instances within the window. Requires both start_after and start_before (max 366 days apart). Instances carry recurringEventId + originalStartTime.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination offset'}, 'source': {'enum': ['internal', 'external_ical'], 'type': 'string', 'description': 'Filter by source: "internal" (created via the API) or "external_ical" (synced from an iCal subscription)'}, 'status': {'enum': ['confirmed', 'tentative', 'cancelled', 'hold'], 'type': 'string', 'description': 'Filter by event status'}, 'agent_id': {'type': 'string', 'description': "Agent ID to list events for across all of the agent's calendars. Provide this or calendar_id."}, 'calendar_id': {'type': 'string', 'description': 'Calendar ID to list events from. Provide this or agent_id.'}, 'start_after': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Only events starting after this ISO 8601 time'}, 'start_before': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Only events starting before this ISO 8601 time'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max results to return'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination offset'}, 'status': {'enum': ['active', 'error', 'paused'], 'type': 'string', 'description': 'Filter by subscription status'}, 'agent_id': {'type': 'string', 'description': 'Agent ID whose iCal subscriptions to list'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Max results (default 50)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination offset (default 0)'}, 'status': {'enum': ['pending', 'confirmed', 'expired', 'cancelled'], 'type': 'string', 'description': 'Filter by proposal status'}, 'organizer_agent_id': {'type': 'string', 'description': 'Filter by organizer agent'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhook_id'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Max results to return'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination offset'}, 'status': {'enum': ['pending', 'delivered', 'failed'], 'type': 'string', 'description': 'Filter to a single delivery status'}, 'webhook_id': {'type': 'string', 'description': 'Webhook subscription whose deliveries to list'}, 'include_payload': {'type': 'boolean', 'description': 'Include the full event payload sent on each delivery'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Max results to return'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Pagination offset'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['event_id'], 'properties': {'event_id': {'type': 'string', 'description': 'Event ID of the hold to release'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposal_id'], 'properties': {'proposal_id': {'type': 'string', 'description': 'Proposal to resolve'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposal_id', 'agent_id', 'response'], 'properties': {'message': {'type': 'string', 'maxLength': 2000, 'description': 'Optional note for the organizer'}, 'agent_id': {'type': 'string', 'description': 'Participant agent responding'}, 'response': {'enum': ['accept', 'decline', 'counter'], 'type': 'string', 'description': 'Decision from this agent'}, 'proposal_id': {'type': 'string', 'description': 'Proposal to respond to'}, 'counter_slots': {'type': 'array', 'items': {'type': 'object', 'required': ['start_time', 'end_time'], 'properties': {'weight': {'type': 'number', 'default': 1, 'maximum': 10, 'minimum': 0, 'description': 'Preference for this slot, 0–10 (higher = more preferred). Used to rank candidate slots when the proposal is resolved. Defaults to 1.'}, 'end_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Slot end time (ISO 8601), after start_time'}, 'start_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'Slot start time (ISO 8601)'}, 'calendar_id': {'type': 'string', 'description': "Calendar to create the event on if this slot is chosen. Defaults to the proposal's top-level calendar_id."}}}, 'maxItems': 20, 'description': 'Alternative slots when response is "counter"'}, 'selected_slot_id': {'type': 'string', 'description': 'Required when response is "accept"'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['key_id'], 'properties': {'key_id': {'type': 'string', 'description': 'ID of the scoped key to revoke'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id'], 'properties': {'timezone': {'type': 'string', 'default': 'UTC', 'maxLength': 64, 'minLength': 1, 'description': 'IANA timezone used to interpret working_hours (e.g. America/New_York)'}, 'calendar_id': {'type': 'string', 'description': 'Calendar to configure'}, 'working_hours': {'anyOf': [{'type': 'object', 'properties': {'fri': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'End of the working window, HH:MM 24-hour, after start (e.g. "17:00")'}, 'start': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'Start of the working window, HH:MM 24-hour, in the rules timezone (e.g. "09:00")'}}, 'description': "A single day's working hours window"}, 'mon': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'End of the working window, HH:MM 24-hour, after start (e.g. "17:00")'}, 'start': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'Start of the working window, HH:MM 24-hour, in the rules timezone (e.g. "09:00")'}}, 'description': "A single day's working hours window"}, 'sat': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'End of the working window, HH:MM 24-hour, after start (e.g. "17:00")'}, 'start': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'Start of the working window, HH:MM 24-hour, in the rules timezone (e.g. "09:00")'}}, 'description': "A single day's working hours window"}, 'sun': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'End of the working window, HH:MM 24-hour, after start (e.g. "17:00")'}, 'start': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'Start of the working window, HH:MM 24-hour, in the rules timezone (e.g. "09:00")'}}, 'description': "A single day's working hours window"}, 'thu': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'End of the working window, HH:MM 24-hour, after start (e.g. "17:00")'}, 'start': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'Start of the working window, HH:MM 24-hour, in the rules timezone (e.g. "09:00")'}}, 'description': "A single day's working hours window"}, 'tue': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'End of the working window, HH:MM 24-hour, after start (e.g. "17:00")'}, 'start': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'Start of the working window, HH:MM 24-hour, in the rules timezone (e.g. "09:00")'}}, 'description': "A single day's working hours window"}, 'wed': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'End of the working window, HH:MM 24-hour, after start (e.g. "17:00")'}, 'start': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$', 'description': 'Start of the working window, HH:MM 24-hour, in the rules timezone (e.g. "09:00")'}}, 'description': "A single day's working hours window"}}}, {'type': 'null'}], 'default': None, 'description': "Per-day working hours map in the calendar's timezone; omit keys for off-days. Pass null to remove any working-hours constraint."}, 'buffer_after_minutes': {'type': 'integer', 'default': 0, 'maximum': 120, 'minimum': 0, 'description': 'Minutes of buffer after each event (0–120)'}, 'buffer_before_minutes': {'type': 'integer', 'default': 0, 'maximum': 120, 'minimum': 0, 'description': 'Minutes of buffer before each event (0–120)'}}}
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).
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'calendar_id', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'HTTPS URL of the iCal feed (.ics) to subscribe to'}, 'label': {'type': 'string', 'description': 'Optional label for this subscription'}, 'agent_id': {'type': 'string', 'description': 'Agent ID that will own this subscription'}, 'calendar_id': {'type': 'string', 'description': 'Calendar ID to sync external events into'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subscription_id'], 'properties': {'subscription_id': {'type': 'string', 'description': 'iCal subscription ID to sync'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'New display name'}, 'status': {'enum': ['active', 'paused'], 'type': 'string', 'description': 'Operational status'}, 'agent_id': {'type': 'string', 'description': 'Agent ID to update'}, 'metadata': {'type': 'object', 'description': 'Arbitrary metadata (max 16KB)', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': {'type': ['string', 'null'], 'description': 'New description (null to clear)'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['calendar_id'], 'properties': {'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'New calendar name'}, 'metadata': {'type': 'object', 'description': 'Arbitrary metadata (max 16KB)', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'timezone': {'type': 'string', 'minLength': 1, 'description': 'New IANA timezone (e.g. America/New_York)'}, 'calendar_id': {'type': 'string', 'description': 'Calendar ID to update'}, 'agent_status': {'enum': ['idle', 'working', 'waiting', 'error'], 'type': 'string', 'description': "Owning agent's status"}, 'default_reminders': {'anyOf': [{'type': 'array', 'items': {'type': 'integer', 'maximum': 40320, 'minimum': 1}, 'maxItems': 5}, {'type': 'null'}], 'description': 'Default reminder offsets in minutes; null for system default, [] for none'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['event_id'], 'properties': {'title': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'New event title'}, 'status': {'enum': ['confirmed', 'tentative', 'cancelled'], 'type': 'string', 'description': 'New event status'}, 'all_day': {'type': 'boolean', 'description': 'Whether this is an all-day event'}, 'end_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'New end time (ISO 8601)'}, 'event_id': {'type': 'string', 'description': 'Event ID to update'}, 'metadata': {'type': 'object', 'description': 'Replacement metadata object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'reminders': {'anyOf': [{'type': 'array', 'items': {'type': 'integer', 'maximum': 40320, 'minimum': 1}, 'maxItems': 5}, {'type': 'null'}], 'description': 'Reminder offsets in minutes before start_time. Omit to leave unchanged, null to inherit the calendar default, [] for no reminders.'}, 'start_time': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$', 'description': 'New start time (ISO 8601)'}, 'calendar_id': {'type': 'string', 'description': 'Calendar ID that owns the event. Optional — if omitted the calendar is resolved from the event.'}, 'description': {'type': ['string', 'null'], 'description': 'New description, or null to clear it'}, 'recurrence_rule': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'description': 'Set/change the recurring series rule (RFC 5545 RRULE subset, full-series semantics), or null to make the event a one-off. Changing the rule or start_time resets cancelled occurrences.'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subscription_id'], 'properties': {'url': {'type': 'string', 'format': 'starts_with', 'pattern': '^https:\\/\\/.*', 'description': 'New HTTPS URL of the iCal feed (.ics)'}, 'label': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'New label for this subscription'}, 'subscription_id': {'type': 'string', 'description': 'iCal subscription ID to update'}}}
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhook_id'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'New HTTPS delivery endpoint'}, 'active': {'type': 'boolean', 'description': 'Set false to pause deliveries, true to resume'}, 'events': {'type': 'array', 'items': {'enum': ['agent.created', 'agent.updated', 'event.created', 'event.updated', 'event.deleted', 'event.started', 'event.ended', 'event.reminder', 'event.hold_created', 'event.hold_expired', 'event.hold_released', 'event.hold_confirmed', 'proposal.created', 'proposal.responded', 'proposal.confirmed', 'proposal.expired', 'proposal.cancelled', 'webhook.deactivated'], 'type': 'string'}, 'minItems': 1, 'description': 'Replacement set of event types to subscribe to'}, 'webhook_id': {'type': 'string', 'description': 'Webhook subscription to update'}}}
Modificado
cancel_connection_link
1 de October de 2026 a las 02:51
Modificado
get_connection_link
1 de October de 2026 a las 02:51
Modificado
create_connection_link
1 de October de 2026 a las 02:51
Modificado
get_audit_log
1 de October de 2026 a las 02:51
Modificado
update_agent
1 de October de 2026 a las 02:51
Modificado
respond_to_proposal
1 de October de 2026 a las 02:51
Modificado
create_proposal
1 de October de 2026 a las 02:51
Modificado
update_ical_subscription
1 de October de 2026 a las 02:51
Modificado
cancel_event
1 de October de 2026 a las 02:51
Modificado
find_meeting_time
1 de October de 2026 a las 02:51
Modificado
get_availability
1 de October de 2026 a las 02:51
Modificado
update_event
1 de October de 2026 a las 02:51
Modificado
list_events
1 de October de 2026 a las 02:51
Modificado
create_event
1 de October de 2026 a las 02:51
Añadido
cancel_connection_link
11 de September de 2026 a las 15:32
Añadido
get_connection_link
11 de September de 2026 a las 15:32
Añadido
create_connection_link
11 de September de 2026 a las 15:32
Añadido
accept_terms
11 de September de 2026 a las 15:32
Añadido
get_audit_log
11 de September de 2026 a las 15:32
Añadido
get_usage
11 de September de 2026 a las 15:32
Añadido
delete_booking_page
11 de September de 2026 a las 15:32
Añadido
get_booking_page
11 de September de 2026 a las 15:32
Añadido
list_booking_pages
11 de September de 2026 a las 15:32
Añadido
create_booking_page
11 de September de 2026 a las 15:32
Añadido
delete_calendar
11 de September de 2026 a las 15:32
Añadido
update_calendar
11 de September de 2026 a las 15:32
Añadido
get_calendar
11 de September de 2026 a las 15:32
Añadido
list_calendars
11 de September de 2026 a las 15:32
Añadido
delete_agent
11 de September de 2026 a las 15:32
Añadido
update_agent
11 de September de 2026 a las 15:32