CalMesh API reference and MCP server setup guide.
# Check availability via REST API
curl "https://calmesh.xyz/api/v1/calendars/work/availability?date=2026-03-15" \
-H "Authorization: Bearer cm_live_..."
# Or use the MCP server
CALMESH_API_KEY=cm_live_... npx @calmesh/mcp-serverAll authenticated endpoints accept a Bearer token in the Authorization header. API keys start with cm_live_ and have one of four scopes. Scopes are capabilities, not a hierarchy — book does not grant write access, and vice versa:
| Scope | Permissions |
|---|---|
| read | List calendars, query events, check availability, detect conflicts |
| write | read + create/update/delete calendar events |
| book | read + create/cancel bookings, manage polls |
| full | All capabilities: events, bookings, connections, calendars, webhooks, API keys |
Two ways to connect: REST API (works everywhere) or MCP server (Claude Desktop, Cursor, Windsurf).
ChatGPT, Claude.ai, Gemini, and custom agents can call the CalMesh API directly via function calling. Give your AI the base URL and API key — it handles the rest.
curl "https://calmesh.xyz/api/v1/calendars/work/availability?date=2026-03-15" \
-H "Authorization: Bearer cm_live_..."Full endpoint list: API Reference
19 calendar tools via Model Context Protocol. Tools appear in your AI's tool palette automatically.
Works with: Claude Desktop, Claude Code, Cursor, Windsurf. Not supported: Claude.ai web, ChatGPT — use the REST API.
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"calmesh": {
"command": "npx",
"args": ["@calmesh/mcp-server"],
"env": { "CALMESH_API_KEY": "cm_live_your_key_here" }
}
}
}// .cursor/mcp.json
{
"mcpServers": {
"calmesh": {
"command": "npx",
"args": ["@calmesh/mcp-server"],
"env": { "CALMESH_API_KEY": "cm_live_your_key_here" }
}
}
}// ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"calmesh": {
"command": "npx",
"args": ["@calmesh/mcp-server"],
"env": { "CALMESH_API_KEY": "cm_live_your_key_here" }
}
}
}CALMESH_API_KEY=cm_live_... \
CALMESH_HTTP_SECRET=your_secret \
npx @calmesh/mcp-server --transport http --port 3100| Tool | Description |
|---|---|
| calmesh_list_calendars | List all unified calendars |
| calmesh_get_events | Get events within a date range |
| calmesh_check_availability | Check available time slots |
| calmesh_find_conflicts | Find overlapping events |
| Tool | Description |
|---|---|
| calmesh_get_slots | Get available booking slots |
| calmesh_create_booking | Create a new booking |
| calmesh_cancel_booking | Cancel a booking |
| calmesh_list_bookings | List bookings with pagination |
| Tool | Description |
|---|---|
| calmesh_create_poll | Create a scheduling poll |
| calmesh_list_polls | List all polls |
| calmesh_get_poll_overlap | Get participant overlap |
| calmesh_decide_poll | Finalize poll with chosen time |
| Tool | Description |
|---|---|
| calmesh_start_oauth_connection | Connect Google or Microsoft calendar |
| calmesh_start_credential_connection | Connect CalDAV or iCal URL |
| calmesh_check_connection_status | Check connection sync status |
| calmesh_list_connections | List all connections |
| calmesh_remove_connection | Remove a connection |
| calmesh_create_calendar | Create unified calendar with sources |
| calmesh_manage_calendar | Update calendar, manage sources |
Base URL: https://calmesh.xyz/api/v1 · OpenAPI spec (JSON)
38 endpoints across 8 categories.
/api/v1/api-keysCreate a new API key (returns the full key once)
auth: session/api/v1/api-keysList all API keys (prefix and metadata only)
auth: session/api/v1/api-keys/:idRevoke an API key
auth: session/api/v1/connectionsList all calendar connections for the authenticated user
auth: session/key/api/v1/connections/googleInitiate Google Calendar OAuth flow
auth: session/api/v1/connections/microsoftInitiate Microsoft Outlook/365 OAuth flow
auth: session/api/v1/connections/icloudConnect Apple iCloud Calendar via CalDAV
auth: session/api/v1/connections/:idGet connection details and status
auth: session/key/api/v1/connections/:idDisconnect a calendar (deletes connection and cached events)
auth: session/key/api/v1/connections/:id/syncTrigger a manual sync for a connection
auth: session/key/api/v1/calendarsCreate a unified calendar
auth: session/key/api/v1/calendarsList all unified calendars
auth: session/key/api/v1/calendars/:slugGet unified calendar details
auth: session/key/api/v1/calendars/:slugUpdate a unified calendar
auth: session/key/api/v1/calendars/:slugDelete a unified calendar
auth: session/key/api/v1/calendars/:slug/sourcesAdd a connection to a unified calendar
auth: session/key/api/v1/calendars/:slug/sources/reorderReorder sources within a unified calendar (sort_order determines default write target)
auth: session/api/v1/calendars/:slug/sources/:sourceIdRemove a connection from a unified calendar
auth: session/key/api/v1/calendars/:slug/eventsCreate an event on a connected calendar (for AI agents/MCP)
auth: session/key/api/v1/calendars/:slug/eventsDelete an event from a connected calendar
auth: session/key/api/v1/calendars/:slug/eventsQuery merged events from all sources in a unified calendar
auth: session/key/api/v1/calendars/:slug/availabilityQuery free/busy availability for a unified calendar
auth: session/key/api/v1/calendars/:slug/conflictsDetect overlapping events across different sources
auth: session/key/api/v1/booking-pagesCreate a booking page attached to a unified calendar
auth: session/key/api/v1/booking-pagesList all booking pages
auth: session/key/api/v1/booking-pages/:slugGet booking page configuration
auth: session/key/api/v1/booking-pages/:slugUpdate a booking page
auth: session/key/api/v1/booking-pages/:slugDelete a booking page
auth: session/key/api/v1/booking-pages/:slug/slotsGet available booking slots (public)
/api/v1/booking-pages/:slug/bookCreate a booking (public, visitor submits)
/api/v1/bookingsList bookings for the authenticated user
auth: session/key/api/v1/bookings/:idGet booking details
auth: session/key/api/v1/bookings/:id/cancelCancel a booking (HMAC signature for visitors, auth for owner)
/api/v1/billingGet current subscription status
auth: session/api/v1/billing/subscribeInitiate Mollie first payment for subscription
auth: session/api/v1/billing/cancelCancel active subscription
auth: session/api/v1/meGet current user profile
auth: session/key/api/healthHealth check endpoint
Embed a CalMesh booking page on any website. Supports inline (iframe) and popup (modal) modes.
<div
data-calmesh-handle="your-handle"
data-calmesh-slug="your-booking-page"
data-mode="inline"
></div>
<script src="https://calmesh.xyz/embed.js" defer></script><div
data-calmesh-handle="your-handle"
data-calmesh-slug="your-booking-page"
data-mode="popup"
data-color="#f97316"
></div>
<script src="https://calmesh.xyz/embed.js" defer></script>