> ## 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](/integrations/overview#run-tools-before-or-after-the-call-or-chat). 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 has open hours in the window the agent asked about.
  </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="Should I use this or the built-in Cal.com tools?">
    Use the integration. The built-in [availability](/build/check-availability) and [booking](/build/book-calendar) tools are being deprecated — they keep working on existing agents for now, but the integration manages the key once for the workspace, adds list, get, reschedule, and cancel, and is where new capability lands. To migrate an agent, [connect Cal.com](/integrations/cal-com), add the integration's availability and booking tools with the same event type ID, and remove the old tools.
  </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-account-s-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>
