Built for machines.
Loved by developers.
Every operation in Ciry is available through the REST API and the MCP server. Automate everything. Let your AI run your calendar.
Authentication
All authenticated endpoints require a Bearer token in the Authorization header. Generate your API key from the Settings page or via the API.
Public endpoints (availability check, booking) do not require authentication.
MCP Setup
Add Ciry to your AI agent's MCP config. Drop this into your claude_desktop_config.json or equivalent:
Your agent gets 24 native tools covering scheduling, orgs, teams, branding, and uploads.
Endpoint Reference
Scheduling
/api/v1/eventsList event types
Show curl example
/api/v1/eventsCreate event type
Show curl example
/api/v1/events/:idGet event type by ID
Show curl example
/api/v1/events/:idUpdate event type
Show curl example
/api/v1/events/:idDelete event type
Show curl example
/api/v1/events/:id/hostsGet host pool for a team event (assignment_strategy + members)
Show curl example
/api/v1/events/:id/hostsReplace host pool (must all be team_members of the event's team)
Show curl example
/api/v1/scheduleGet availability schedule
Show curl example
/api/v1/scheduleSet availability schedule
Show curl example
/api/v1/availabilityCheck available slots (public). Returns [{start, end, duration_minutes}]
Show curl example
/api/v1/bookingsBook a meeting (public). Validates the slot, picks a host for round-robin, writes the calendar event, persists to bookings + booking_answers.
Show curl example
/api/v1/bookingsList your bookings. Filters: ?status=confirmed|cancelled|all, ?from=ISO, ?to=ISO
Show curl example
/api/v1/bookings/:idGet a single booking
Show curl example
/api/v1/bookings/:idCancel a booking. Best-effort calendar removal.
Show curl example
/api/v1/bookings/:idReschedule. Same host, validates new slot, replaces calendar event.
Show curl example
/api/v1/events/:id/questionsList per-event booking questions (public read)
Show curl example
/api/v1/events/:id/questionsReplace the full set of booking questions on an event
Show curl example
/api/v1/availability-profilesList your availability profiles with embedded slots + overrides
Show curl example
/api/v1/availability-profilesCreate a profile with optional weekly slots
Show curl example
/api/v1/availability-profiles/:idGet one profile with slots + overrides
Show curl example
/api/v1/availability-profiles/:idUpdate name/timezone/default; pass slots to replace them
Show curl example
/api/v1/availability-profiles/:idDelete a profile (cascades to slots + overrides)
Show curl example
/api/v1/availability-profiles/:id/overridesUpsert a date override (holiday, special hours)
Show curl example
/api/v1/availability-profiles/:id/overrides/:overrideIdRemove a date override
Show curl example
Organizations
/api/v1/orgsList your organizations
Show curl example
/api/v1/orgsCreate organization
Show curl example
/api/v1/orgs/:idGet organization
Show curl example
/api/v1/orgs/:idUpdate organization
Show curl example
/api/v1/orgs/:idDelete organization
Show curl example
/api/v1/orgs/:id/membersList org members
Show curl example
/api/v1/orgs/:id/membersAdd org member
Show curl example
/api/v1/orgs/:id/membersRemove org member by user_id query param
Show curl example
/api/v1/orgs/:id/members/:userIdUpdate a member's role
Show curl example
/api/v1/orgs/:id/members/:userIdRemove org member (path-style)
Show curl example
/api/v1/orgs/:id/teamsList teams
Show curl example
/api/v1/orgs/:id/teamsCreate team
Show curl example
/api/v1/orgs/:id/teams/:teamIdGet team
Show curl example
/api/v1/orgs/:id/teams/:teamIdUpdate team
Show curl example
/api/v1/orgs/:id/teams/:teamIdDelete team
Show curl example
/api/v1/orgs/:id/teams/:teamId/membersList team members
Show curl example
/api/v1/orgs/:id/teams/:teamId/membersAdd team member
Show curl example
/api/v1/orgs/:id/teams/:teamId/membersRemove team member
Show curl example
Branding & Assets
/api/v1/brandingGet branding (with fallback chain)
Show curl example
/api/v1/brandingSet branding
Show curl example
/api/v1/uploadUpload image
Show curl example
Discovery (Public)
/api/v1/discover/:slugGet user or org info, events with per-event questions, and booking instructions — no auth needed
Show curl example
Connections (Calendar / Conferencing OAuth)
/api/v1/connectionsList connected toolkits
Show curl example
/api/v1/connectionsInitiate OAuth — returns connect_url for the user to visit
Show curl example
/api/v1/connections/:toolkitRevoke a toolkit. Optional ?connected_account_id=...
Show curl example
Orchestration (Phase 2)Coming soon
/api/v1/meeting-requestsList your meeting requests. Filters: ?status=&limit=
Show curl example
/api/v1/meeting-requestsCreate a delegated scheduling job
Show curl example
/api/v1/meeting-requests/:idGet one meeting request
Show curl example
/api/v1/meeting-requests/:idUpdate fields (not status — use /transition)
Show curl example
/api/v1/meeting-requests/:idDelete (rare — usually transition to canceled)
Show curl example
/api/v1/meeting-requests/:id/transitionMove to a new status. Illegal transitions return 409.
Show curl example
/api/v1/meeting-requests/:id/eventsAudit log: every status change, message, hold, etc.
Show curl example
/api/v1/counterpartiesList people you have scheduled with
Show curl example
/api/v1/counterpartiesUpsert a counterparty (idempotent on owner+email)
Show curl example
/api/v1/counterparties/:idGet one counterparty
Show curl example
/api/v1/counterparties/:idDelete a counterparty
Show curl example
/api/v1/approval-policyYour approval policy (auto-created with defaults)
Show curl example
/api/v1/approval-policyUpdate policy fields
Show curl example
/api/v1/meeting-requests/:id/routePhase 3 — assess capability, pick mode, open negotiation, send outreach. Optional body { force_mode }.
Show curl example
/api/v1/intentPhase 6 — natural-language → meeting_request. Body { text, force_create? }. Returns { intent, meetingRequestId, status }.
Show curl example
Tasks
/api/v1/tasksList tasks (filter by ?status=todo|done, ?org_id=)
Show curl example
/api/v1/tasksCreate a task
Show curl example
/api/v1/tasks/:idGet a task
Show curl example
/api/v1/tasks/:idUpdate a task (title, notes, status, due_date)
Show curl example
/api/v1/tasks/:idDelete a task
Show curl example
Profile
/api/v1/meGet your profile
Show curl example
/api/v1/meUpdate your profile
Show curl example
/api/v1/me/api-keyGenerate API key
Show curl example
MCP Tools
24 native tools available to any MCP-compatible AI agent. Your assistant calls these directly — no HTTP wrangling required.
Scheduling
ciry.list_eventsList all event typesciry.create_eventCreate a new event typeciry.get_eventGet event type detailsciry.update_eventUpdate an event typeciry.delete_eventDelete an event typeciry.get_scheduleGet availability scheduleciry.set_scheduleSet availability scheduleciry.check_availabilityCheck open time slotsciry.book_meetingBook a meetingOrganizations
ciry.list_orgsList your organizationsciry.create_orgCreate an organizationciry.get_orgGet organization detailsciry.update_orgUpdate an organizationciry.delete_orgDelete an organizationciry.manage_membersAdd or remove org membersciry.list_teamsList teams in an orgciry.create_teamCreate a teamciry.manage_teamUpdate or delete a teamciry.manage_team_membersAdd or remove team membersBranding & Assets
ciry.get_brandingGet branding with fallback chainciry.set_brandingSet colors, logo, and themeciry.upload_imageUpload an image assetTasks
ciry.list_tasksList your tasks/todosciry.create_taskCreate a task or reminderciry.update_taskUpdate a taskciry.complete_taskMark a task as doneciry.delete_taskDelete a taskProfile
ciry.get_profileGet your profileciry.update_profileUpdate profile details