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

# Cal.com agent functions

> Cal.com tools for Retell AI agents: check live availability, book appointments, and list, get, reschedule, or cancel bookings during the call.

A [connected Cal.com account](/integrations/cal-com) gives your agents the full booking lifecycle as live tools: check availability, book, and list, get, reschedule, or cancel bookings. Tools run during a conversation or [before and after it](/agent/agent-workflow). There's no synced copy of your calendar in Retell; every tool call reads or writes Cal.com live.

## Available tools

These tools appear in your agent's function menu once your account is connected. **Check Availability** and **Book Appointment** each take an [event type ID](#find-an-event-type-id), so they're pinned to one event type. See [use integration tools in an agent](/integrations/overview#use-integration-tools-in-an-agent) for how to add and configure them.

| Tool                   | What it does                                                                        |
| ---------------------- | ----------------------------------------------------------------------------------- |
| **Check Availability** | List open slots for the configured event type in a time window                      |
| **Book Appointment**   | Book the configured event type after the caller confirms a time                     |
| **List Bookings**      | List a caller's upcoming bookings (up to 50) by attendee email within a time window |
| **Get Booking**        | Fetch one booking by its UID                                                        |
| **Reschedule Booking** | Move an existing booking to a new confirmed time                                    |
| **Cancel Booking**     | Cancel an existing booking                                                          |

<Tip>
  Chain the tools: **List Bookings** finds the booking UID by the caller's email, **Check Availability** confirms the new slot exists, and **Reschedule Booking** moves it. Map the UID from the list result to a [dynamic variable](/build/dynamic-variables) so the later tools can use it.
</Tip>

## Find an event type ID

<Steps>
  <Step title="Open the event type">
    In the Cal.com dashboard, open **Event Types** and select the one the agent should book.
  </Step>

  <Step title="Read the ID from the URL">
    The event type ID is the number in the address bar, for example `https://app.cal.com/event-types/1234567` — the ID is `1234567`.
  </Step>

  <Step title="Paste it into the tool">
    Enter that number in the tool's event type ID input. Point a separate tool at each event type you want the agent to handle.
  </Step>
</Steps>

<Frame caption="An event type open in Cal.com — the event type ID is the number after /event-types/ in the address bar.">
  <div style={{ aspectRatio: '16 / 9', width: '100%', background: 'rgba(128,128,128,0.15)', display: 'flex', alignItems: 'center', justifyContent: 'center', borderRadius: '8px', overflow: 'hidden' }}>
    <img src="https://mintcdn.com/retellai/eQ17pyeTZnmNJIsQ/images/integration/cal-com-event-type-id.png?fit=max&auto=format&n=eQ17pyeTZnmNJIsQ&q=85&s=8c8c1f65c8fd1d1f5aa584ccb5bc8871" alt="A Cal.com event type named 30 min meeting open on its Basics tab, with title, description, duration, and location settings. The browser address bar is highlighted with a blue ring, showing app.cal.com/event-types/ followed by the event type ID, which is redacted in this shot." style={{ maxWidth: '100%', maxHeight: '100%', objectFit: 'contain' }} width="1792" height="982" data-path="images/integration/cal-com-event-type-id.png" />
  </div>
</Frame>

## Permissions

The API key grants the connected account's full API access; there are no per-tool scopes to grant. Every tool reads the connected account's event types and reads and writes its bookings.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Availability comes back empty">
    Check the event type ID on the tool: it must be an event type the connected account can book, and the ID must match the number in the event type's URL. Then check the event type on Cal.com: it needs open hours in the window the agent asked about, and its calendar (Google, Outlook, and so on) must be connected under **Apps** so Cal.com can read your busy times.
  </Accordion>

  <Accordion title="List Bookings can't find the caller's booking">
    The lookup matches on the attendee email within the time window the agent supplies. Have the agent confirm the email used to book, and if the booking might sit outside the window, widen it.
  </Accordion>
</AccordionGroup>

## FAQ

<AccordionGroup>
  <Accordion title="What happens to my agents on the built-in Cal.com tools?">
    You can no longer add a built-in Cal.com tool from the dashboard, and the API stops creating and updating them on 09/30/2026, so that's your last day to change a built-in tool's key or event type ID. Existing tools keep running until **10/31/2026**, when Retell migrates them to this integration: it sets up one connection per API key it finds, reusing a connection you've already made for that key, and keeps each tool's function name so your prompts don't break. A tool whose key Cal.com rejects, because it expired or was revoked, is skipped and stops working, so migrate that one by hand: [connect Cal.com](/integrations/cal-com), add **Check Availability** and **Book Appointment** with the same event type ID, and delete the built-in tool. See the [deprecation notice](/deprecation-notice/2026/10-31_legacy_calcom_tools) for the full timeline.
  </Accordion>

  <Accordion title="What if my scheduling lives somewhere else?">
    [Calendly](/integrations/calendly-functions) covers availability, booking, and cancellation, and [GoHighLevel calendars](/integrations/gohighlevel-functions#book-the-sub-accounts-calendars) cover the full lifecycle when your scheduling sits in the same sub-account as your contacts.
  </Accordion>

  <Accordion title="Does the attendee get a confirmation email?">
    Yes. Bookings, reschedules, and cancellations go through Cal.com, so attendees get exactly the notifications and calendar invites your event type is configured to send.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Integration tools for prompt agents" icon="wand-magic-sparkles" href="/build/single-multi-prompt/integration-tools">
    Add Cal.com tools to a single- or multi-prompt agent and test them with live requests.
  </Card>

  <Card title="Integration tools in conversation flow" icon="diagram-project" href="/build/conversation-flow/integration-tools">
    Call Cal.com tools from a function node and branch on the result.
  </Card>

  <Card title="Dynamic variables" icon="code" href="/build/dynamic-variables">
    Carry booking UIDs and confirmed times between tools and prompts.
  </Card>

  <Card title="Simulation testing" icon="flask" href="/test/llm-simulation-testing">
    Mock the booking tools to test your scheduling flow without creating real bookings.
  </Card>
</CardGroup>
