> ## Documentation Index
> Fetch the complete documentation index at: https://docs.routemcp.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Cal.com

> Scheduling automation via the Cal.com API v2 — bookings, event types, availability slots, schedules, out-of-office, and connected calendars. 63 tools accessible through the MCP runtime endpoint, authenticated with a Cal.com API key.

<img src="https://icon.horse/icon/cal.com" alt="Cal.com" style={{ width: "48px", height: "48px", marginBottom: "16px" }} />

## Overview

| Property   | Value                    |
| ---------- | ------------------------ |
| Slug       | `cal`                    |
| Category   | Calendar                 |
| Auth       | API key (Bearer)         |
| Base URL   | `https://api.cal.com/v2` |
| Tool count | 63                       |
| Rate limit | 2 req/sec, 120 req/min   |

## Supported tools

All 63 slugs surfaced through MCP:

| Area          | Slugs                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Identity      | `CAL_GET_ME`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Bookings      | `CAL_CREATE_BOOKING`, `CAL_LIST_BOOKINGS`, `CAL_GET_BOOKING`, `CAL_GET_SEATED_BOOKING`, `CAL_CANCEL_BOOKING`, `CAL_CONFIRM_BOOKING`, `CAL_DECLINE_BOOKING`, `CAL_RESCHEDULE_BOOKING`, `CAL_REQUEST_RESCHEDULE_BOOKING`, `CAL_REASSIGN_BOOKING`, `CAL_REASSIGN_BOOKING_TO_USER`, `CAL_MARK_BOOKING_ABSENT`, `CAL_GET_BOOKING_ATTENDEES`, `CAL_GET_BOOKING_ATTENDEE`, `CAL_ADD_BOOKING_ATTENDEE`, `CAL_ADD_BOOKING_GUESTS`, `CAL_GET_BOOKING_REFERENCES`, `CAL_GET_BOOKING_ROUTING_TRACE`, `CAL_GET_BOOKING_CALENDAR_LINKS` |
| Slots         | `CAL_GET_AVAILABLE_SLOTS`, `CAL_RESERVE_SLOT`, `CAL_GET_RESERVED_SLOT`, `CAL_UPDATE_RESERVED_SLOT`, `CAL_DELETE_RESERVED_SLOT`                                                                                                                                                                                                                                                                                                                                                                                            |
| Schedules     | `CAL_CREATE_SCHEDULE`, `CAL_LIST_SCHEDULES`, `CAL_GET_DEFAULT_SCHEDULE`, `CAL_GET_SCHEDULE`, `CAL_UPDATE_SCHEDULE`, `CAL_DELETE_SCHEDULE`                                                                                                                                                                                                                                                                                                                                                                                 |
| Out-of-office | `CAL_CREATE_OOO`, `CAL_LIST_OOO`, `CAL_UPDATE_OOO`, `CAL_DELETE_OOO`                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Event types   | `CAL_CREATE_EVENT_TYPE`, `CAL_LIST_EVENT_TYPES`, `CAL_GET_EVENT_TYPE`, `CAL_GET_EVENT_TYPE_HISTORY`, `CAL_UPDATE_EVENT_TYPE`, `CAL_DELETE_EVENT_TYPE`, `CAL_CREATE_EVENT_TYPE_PRIVATE_LINK`, `CAL_LIST_EVENT_TYPE_PRIVATE_LINKS`, `CAL_UPDATE_EVENT_TYPE_PRIVATE_LINK`, `CAL_DELETE_EVENT_TYPE_PRIVATE_LINK`, `CAL_CREATE_EVENT_TYPE_WEBHOOK`, `CAL_LIST_EVENT_TYPE_WEBHOOKS`, `CAL_GET_EVENT_TYPE_WEBHOOK`, `CAL_UPDATE_EVENT_TYPE_WEBHOOK`, `CAL_DELETE_EVENT_TYPE_WEBHOOK`, `CAL_DELETE_ALL_EVENT_TYPE_WEBHOOKS`       |
| Calendars     | `CAL_LIST_CALENDARS`, `CAL_GET_BUSY_TIMES`, `CAL_GET_CALENDAR_OAUTH_URL`, `CAL_CHECK_CALENDAR_CONNECTION`, `CAL_CHECK_ICS_FEED`, `CAL_SAVE_ICS_FEED`, `CAL_SAVE_GOOGLE_OUTLOOK_CALENDAR`, `CAL_SAVE_APPLE_CALENDAR`, `CAL_DISCONNECT_CALENDAR`, `CAL_GET_UNIFIED_MEETING_DETAILS`, `CAL_UPDATE_UNIFIED_MEETING_DETAILS`, `CAL_UPDATE_DESTINATION_CALENDARS`                                                                                                                                                               |

## Connect setup

Unlike OAuth providers, Cal.com connects with an **API key** — there is no redirect or consent screen. Each end user supplies their own Cal.com key, which is stored encrypted and sent as a Bearer token.

<Steps>
  <Step title="Create a Cal.com API key">
    In Cal.com, go to **Settings → Developer → API keys** and create a key. It looks like `cal_live_xxxxxxxx`. Copy it — it's shown only once.
  </Step>

  <Step title="Open the connect form">
    When the agent needs Cal.com and it isn't connected yet, it surfaces a **Connect** action. The form asks for a single field — your Cal.com API key (e.g. `cal_live_xxxxxxxx`).
  </Step>

  <Step title="Submit">
    On submit, RouteMCP stores the key (encrypted at rest) and marks the connection **active** immediately — no redirect. Use **Disconnect** to remove it.
  </Step>
</Steps>

## Usage

### Through the chat endpoint (recommended)

```bash theme={null}
# Book a meeting (the agent checks availability first, then books)
curl -N -X POST "https://api.routemcp.io/api/v1/mcp/<workspace_id>/chat" \
  -H "x-api-key: sk_live_your_key" \
  -H "x-session-id: user-42" \
  -H "content-type: application/json" \
  -d '{"message": "Book a 30-minute intro call tomorrow at 2pm with alice@example.com."}'

# Read bookings
curl -N -X POST "https://api.routemcp.io/api/v1/mcp/<workspace_id>/chat" \
  -H "x-api-key: sk_live_your_key" \
  -H "x-session-id: user-42" \
  -H "content-type: application/json" \
  -d '{"message": "What Cal.com meetings do I have this week?"}'
```

### Direct MCP JSON-RPC (Claude Desktop / Cursor / custom MCP clients)

```json theme={null}
{
  "mcpServers": {
    "routemcp": {
      "url": "https://api.routemcp.io/api/v1/mcp/<workspace_id>",
      "headers": {
        "x-api-key": "<YOUR_API_KEY>",
        "x-session-id": "<SESSION_ID>"
      }
    }
  }
}
```

Once connected, MCP clients can invoke any of the 63 tools by slug via the standard `tools/call` JSON-RPC method.
