Connect Cal ID to Your AI Assistant

Works with MCP-compatible apps

MCP is a secure way for AI tools like Claude, Cursor, and ChatGPT connectors to use your Cal ID account. Once connected, your assistant can help you check bookings, find contacts, manage event types, and work with schedules using plain language.

Connection Link

Most apps ask for a server URL. Use this link:

  • MCP server URL: https://mcp.cal.id/mcp

Keep your token private. Treat your Cal ID token like a password. Do not paste it in public chats, screenshots, or shared documents.

What You Can Do

Bookings

Ask about upcoming meetings, reschedule bookings, or cancel a booking when needed.

Contacts

List contacts, create a contact, update details, or view recent meeting history.

Availability

Find open slots, review schedules, and check event types without opening the dashboard.

Before You Start

  1. Open the AI app you want to connect, such as Claude Desktop or Cursor.
  2. Copy the MCP server URL shown above.
  3. Have your Cal ID API key or access token ready. In examples below, replace calid_xxx with your real token.
  4. After saving the setup, restart or reconnect the AI app if it does not connect right away.

Need an API key? Generate one from the Cal ID dashboard for this environment: https://cal.id/settings/developer/api-keys

Choose Your App

Pick the app you use and follow the steps. The examples are ready to copy and paste.

What You Need

  • Claude Desktop installed.
  • Your Cal ID token.
  • The MCP server URL from this page.

Steps

  1. Open Claude Desktop.
  2. Open Settings, then Developer or Connectors.
  3. Add a custom MCP server.
  4. Paste the setup below and replace calid_xxx.
  5. Save, then restart Claude if needed.

Try this direct setup first:

{
  "mcpServers": {
    "calid": {
      "type": "http",
      "url": "https://mcp.cal.id/mcp",
      "headers": {
        "Authorization": "Bearer calid_xxx"
      }
    }
  }
}

If Claude does not accept the direct setup, use this bridge setup instead:

{
  "mcpServers": {
    "calid": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.cal.id/mcp", "--transport", "http-first"],
      "env": {
        "MCP_REMOTE_HEADER_AUTHORIZATION": "Bearer calid_xxx"
      }
    }
  }
}

Check It Works

  • Open a new Claude chat.
  • Look for calid in the tools or connectors menu.
  • Ask: “List my contacts.”

If Something Goes Wrong

  • If Claude says unauthorized, check that your token is pasted correctly.
  • If tools do not appear, restart Claude and reopen the app.
  • If the direct setup fails, use the bridge setup above.

What You Need

  • Cursor installed.
  • Your Cal ID token.
  • Access to Cursor Settings → MCP, or a .cursor/mcp.json file.

Steps

  1. Open Cursor Settings → MCP.
  2. Add a new server named calid.
  3. Paste the setup below and replace calid_xxx.
  4. Reload Cursor or reconnect the server.
{
  "mcpServers": {
    "calid": {
      "url": "https://mcp.cal.id/mcp",
      "headers": {
        "Authorization": "Bearer calid_xxx"
      }
    }
  }
}

Check It Works

  • Confirm Cursor shows the server as connected.
  • Ask: “Use Cal ID to list my contacts.”

If Something Goes Wrong

  • If Cursor rejects the setup, check for missing commas or quotes.
  • If it connects but tools fail, check your token.
  • Make sure the URL ends with /mcp.

What You Need

  • A ChatGPT plan or workspace that supports custom connectors.
  • Developer mode or admin permission, if your workspace requires it.
  • Your Cal ID token, if ChatGPT asks for bearer-token authentication.

Steps

  1. Open ChatGPT Settings → Connectors or Apps & Connectors.
  2. Add a custom connector.
  3. Paste this MCP server URL: https://mcp.cal.id/mcp.
  4. If asked for authentication, choose bearer token and paste your token.
  5. Save the connector and enable it in a chat.
{
  "name": "Cal ID",
  "mcp_url": "https://mcp.cal.id/mcp",
  "authentication": {
    "type": "bearer",
    "token": "calid_xxx"
  }
}

Check It Works

  • Confirm ChatGPT shows the connector as connected.
  • Start a new chat and select Cal ID.
  • Ask: “List my contacts.”

If Something Goes Wrong

  • If you do not see custom connectors, your plan or workspace may not have them enabled.
  • If ChatGPT asks for admin approval, contact your workspace admin.
  • If bearer-token setup is unavailable, use Claude, Cursor, or another MCP client for now.

What You Need

  • An app that supports MCP servers.
  • A place to paste a server URL and authorization header.
  • Your Cal ID token.

Steps

  1. Add a new MCP server in your app.
  2. Use the server URL https://mcp.cal.id/mcp.
  3. Add the authorization header shown below.
  4. Save and reconnect.
{
  "mcpServers": {
    "calid": {
      "type": "http",
      "url": "https://mcp.cal.id/mcp",
      "headers": {
        "Authorization": "Bearer calid_xxx",
        "Accept": "application/json, text/event-stream"
      }
    }
  }
}

Check It Works

  • Confirm the app shows the server as connected.
  • Ask it to list contacts or bookings.
  • If available, check that tools like list_contacts appear.

If Something Goes Wrong

  • Use the MCP server URL, not the API docs URL.
  • Make sure your token is in the authorization header.
  • If your app asks for a transport type, choose HTTP or Streamable HTTP.

Advanced Connection Test

Most users can skip this. Use it only if you want to check the connection manually or share details with support.

curl -i https://mcp.cal.id/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer calid_xxx" \
  -d '{"jsonrpc":"2.0","id":"init-1","method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Advanced Tool Check

This confirms which Cal ID actions your app can see, such as contacts, bookings, schedules, and teams.

curl -i https://mcp.cal.id/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer calid_xxx" \
  -H "mcp-session-id: <SESSION_ID>" \
  -d '{"jsonrpc":"2.0","id":"2","method":"tools/list","params":{}}'

Available Actions

These are the Cal ID actions your connected app can use. You usually do not need to call them by name; just ask naturally.

Availability & Schedules

ToolDescription
create_availability Create availability for the current user and given schedule
create_schedule Create a schedule
delete_availability Delete an availability
delete_schedule Delete a schedule for the current user
get_availability Get current user availability
get_schedule Get current user schedules
update_availability Update an availability
update_schedule Update a schedule for the current user

Booking

ToolDescription
create_booking Create a new booking
get_booking Get current user bookings
get_booking_by_id Get booking by id
update_booking_reassignbookingautomatically Reassign booking to automatically via round robin
update_booking_reassignbookingtouser Reassign round robin booking to a certain user

Contact

ToolDescription
create_contact Create a contact for the current user
delete_contact Delete contact by id
get_contact Get contact by id
get_contact_meetings Get contact meeting history
update_contact Update contact by id

Event

ToolDescription
get_event_types Get all event types for the authenticated user (paginated)
get_event_types_by_id Get event type by ID for the authenticated user

Eventtype

ToolDescription
create_eventtype Create a new event type for the authenticated user
delete_eventtype Delete event type for the authenticated user
update_eventtype Update event type details for the authenticated user

Other

ToolDescription
add_team_member Create a team membership
cancel_booking Cancel booking by id Optional request body field controls for cancellation scope, seated-event seat cancellation, and payment refund handling.
change_booking_confirmation_status Change booking confirmation status (accept or decline)
list_contacts List current user contacts
remove_team_member Delete a membership of a team
reschedule_booking Reschedule booking by id

Slots

ToolDescription
create_slots_reserve Reserve a given slot
delete_slots Delete slot by id
get_slot Get slot by uid
get_slots Get available slots for an event type or users
update_slots Update slot by id

Teams

ToolDescription
create_team Create a new team for the authenticated user
create_team_eventtype Create an event type for a team
delete_team Delete team for the authenticated user
delete_team_eventtype Delete a team event type
get_team Get team by ID for the authenticated user
get_team_event_type Get a team event type by ID
get_team_event_types Get event types for a team
get_team_membership Get a specific membership of a team
get_team_memberships Get memberships of a team
get_team_schedules Get all team members' schedules
get_teams Get all teams for the authenticated user (paginated)
update_team_details Update team details for the authenticated user
update_team_eventtype Update a team event type
update_team_membership Update a membership of a team

User

ToolDescription
update_user_profile Edit user profile

Users

ToolDescription
create_users_edit_profile_avatar Upload avatar via multipart/form-data
get_users Get user public events
get_users_me Get current user profile

Webhook

ToolDescription
create_webhook Created webhook by id
delete_webhook Delete webhook by id
get_webhook Get user webhooks
get_webhook_by_id Get webhook by id
update_webhook Update webhook by id

Try These Prompts

  • "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 recent meeting history for one of them."
  • "Create a booking with John Doe for next Tuesday at 3pm."

Helpful Links