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

# Cal ID MCP Server

> Connect Cal ID to Claude, Cursor, ChatGPT, and other AI assistants with the Model Context Protocol so they can read your bookings, find open slots, and manage scheduling in plain language.

The Cal ID MCP server lets an AI assistant work with your Cal ID account directly. Once connected, you can ask your assistant to check bookings, find open slots, create event types, or update contacts — in plain language, without opening the dashboard or writing any code.

**Model Context Protocol (MCP)** is an open standard for connecting AI assistants to external tools and data. Cal ID runs a hosted MCP server, so there is nothing to install or self-host — you point your assistant at a URL and authenticate with your API key.

<Info>
  **Server URL:** `https://mcp.cal.id/mcp`

  Ready to set it up? Go straight to [Connect your AI assistant](/docs/mcp/connect).
</Info>

## What you can do

<CardGroup cols={2}>
  <Card title="Bookings" icon="calendar-check">
    Ask what's coming up, filter by attendee or date, reschedule a meeting, or cancel one.
  </Card>

  <Card title="Availability" icon="clock">
    Find open slots, review and edit weekly schedules, and reserve a slot before confirming.
  </Card>

  <Card title="Event types" icon="list-check">
    List, create, update, and delete event types for yourself or a team.
  </Card>

  <Card title="Contacts & teams" icon="users">
    Search contacts, review meeting history, and manage team members and team events.
  </Card>
</CardGroup>

## Prompts to try

Once connected, these all work without naming a single tool:

* "What bookings do I have this week?"
* "Show my available slots for next Monday."
* "Create a 30-minute sales demo event type."
* "List my contacts and show the recent meeting history for one of them."
* "Reschedule my 3pm on Thursday to Friday morning."

<Tip>
  You rarely need to name tools yourself. Describe the outcome you want and let the assistant choose. Tool names are only useful when you're debugging — see the [tool reference](/docs/mcp/tools).
</Tip>

## What you need

* An MCP-compatible app — Claude Desktop, Claude web connectors, Cursor, ChatGPT connectors, or any client that supports remote MCP servers.
* A Cal ID API key. Generate one at **Settings → Developer → API Keys**, or follow [How to get your API key](/docs/developers/api-key).

## How access and permissions work

The MCP server acts **as you**. It uses your API key, so an assistant connected to it can see and change anything your own account can see and change — and nothing beyond it.

<Warning>
  **There is no read-only mode and no per-tool permission list.** Every connection gets all 58 tools, and **35 of them write** — 12 create, 13 update, 9 delete, and 1 replace, against 23 that only read. Connecting is not a read-only act: an assistant that can list your bookings can also cancel them.
</Warning>

<Warning>
  **Your API key is a password.** Anyone holding it can read your bookings and contacts and make changes on your behalf. Never paste it into a public chat, a screenshot, a shared document, or a support ticket. If a key is exposed, rotate it immediately from **Settings → Developer → API Keys**.
</Warning>

Three habits keep this safe:

* Use a **dedicated key** for MCP rather than reusing one that's already wired into a production integration, so you can revoke it without breaking anything else.
* Keep your client's **tool-approval prompts on** while you get comfortable, so destructive actions like `delete_eventtype` or `cancel_booking` need a confirmation.
* **Hide the destructive tools** if you connect through the `mcp-remote` bridge. It accepts `--ignore-tool`, which drops tools before your assistant ever sees them — the closest thing to a read-only mode:

  ```
  --ignore-tool "delete*" --ignore-tool "cancel*"
  ```

  Add these to the `args` array alongside `--header`. See [Connect your AI assistant](/docs/mcp/connect). This filters at the bridge, not at Cal ID: the key itself still has full access, so it protects you from an assistant's mistakes, not from a leaked key.

<Note>
  Cal ID checks your key only when a tool actually runs, not when a client connects. A wrong key still connects and still lists all 58 tools — see [Verify the connection](/docs/mcp/connect#verify-the-connection) for the check that really tests it.
</Note>

## What MCP does not cover

The MCP server exposes the Cal ID REST API, so it inherits the same boundaries. These areas have **no MCP tools** and must be managed in the dashboard:

| Area                             | Where to manage it                                                  |
| -------------------------------- | ------------------------------------------------------------------- |
| Workflows and reminders          | [Workflows](/docs/workflows/overview)                                    |
| Routing forms                    | [Routing forms](/docs/routing/routing-forms)                             |
| Insights and analytics           | [Insights](/docs/insights/booking-performance)                           |
| App installation and connections | [App Store](/docs/apps/app-store)                                        |
| Branding and appearance          | [Appearance](/docs/appearance/appearance)                                |
| Billing and subscription         | [Subscription & pricing](/docs/getting-started/subscription-and-pricing) |

<Note>
  The tool list is generated from the API, so it grows as the API does. To see exactly what your connection offers today, ask your assistant to list its Cal ID tools, or run the [tool check](/docs/mcp/connect#verify-the-connection).
</Note>

## MCP or the REST API?

Both reach the same data. Choose by who is calling.

| Use MCP when                                          | Use the [REST API](/docs/api-reference/introduction) when |
| ----------------------------------------------------- | ---------------------------------------------------- |
| A person is asking an assistant to do something       | Your own code is making the call                     |
| The task is exploratory or conversational             | The task runs on a schedule or in a pipeline         |
| You want scheduling inside Claude, Cursor, or ChatGPT | You need precise control over payloads and retries   |
| You'd rather not write code                           | You need webhooks, which MCP does not receive        |

<Info>
  MCP **cannot receive webhooks.** It can create and manage webhook subscriptions, but the deliveries themselves go to your server. See [Build a webhook receiver](/docs/developers/guides/webhook-receiver).
</Info>

## Start using the MCP server

<CardGroup cols={2}>
  <Card title="Connect your AI assistant" icon="link" href="/docs/mcp/connect">
    Step-by-step setup for Claude, Cursor, ChatGPT, and other clients.
  </Card>

  <Card title="Tool reference" icon="wrench" href="/docs/mcp/tools">
    All 58 tools, grouped by what they do, plus the gotchas worth knowing.
  </Card>

  <Card title="Get your API key" icon="key" href="/docs/developers/api-key">
    Create, secure, and rotate the credential MCP authenticates with.
  </Card>

  <Card title="REST API reference" icon="code" href="/docs/api-reference/introduction">
    The full API behind every MCP tool.
  </Card>
</CardGroup>


## Related topics

- [Connect Your AI Assistant to Cal ID](/docs/mcp/connect.md)
- [Cal ID MCP Tool Reference](/docs/mcp/tools.md)
- [How to Get Your Cal ID API Key](/docs/developers/api-key.md)
- [Cal ID Scheduling API Reference](/docs/api-reference/introduction.md)
