Calendly
An agent tool that books into an event type you've already set up in Calendly, rather than creating an event from scratch the way Google Calendar or Outlook Calendar can.
Calendly's API has no "create an arbitrary event" call
Google Calendar and Outlook Calendar can both create a brand-new event with any start/end time you give them. Calendly's API doesn't offer that — it only lets you book an invitee onto one of your existing event types, at one of the times that event type's own availability rules already allow. In practice this means: the agent checks a specific event type's real open slots, then books one of them. It can't invent a new kind of meeting or a slot outside what you've configured in Calendly.
Connecting
From Integrations, connect Calendly. Unlike Google/Outlook, Calendly has no built-in provider in the OAuth library iCallAgent uses elsewhere, so the connection is a hand-rolled OAuth2 flow with PKCE — functionally the same "click connect, approve on Calendly's consent screen, come back connected" experience, just implemented directly against Calendly's own OAuth endpoints rather than a shared library.
Configuring the tool
| Field | Required | Description |
|---|---|---|
calendar_id | No | Which Calendly event type to book against — a full event-type URI or its UUID. Left blank, the tool uses the connected account's first active event type. |
timezone | No | Timezone passed to Calendly for the invitee. |
The field is called calendar_id for every calendar integration
Google Calendar, Outlook Calendar and Calendly share one config schema, and the field was named before Calendly was added. For Calendly specifically, this value identifies an event type, not a calendar.
Actions
| Action | What it does | Arguments the agent supplies |
|---|---|---|
check_availability | Reads the event type's real open slots over a time range (max 31 days) | time_min, time_max (both optional, default to now → +7 days) |
create_event | Books an invitee onto one of those open slots | start (required); attendees (the invitee's email, required); invitee_name (required — Calendly needs a name, not just an email); summary (used as a fallback name if invitee_name isn't given) |
cancel_event | Cancels a booking | event_id (the scheduled-event URI or UUID returned when it was booked) |
Token refresh
Calendly rotates the refresh token on every use and revokes the old one — this is Calendly's own OAuth 2.1 behaviour, not an iCallAgent choice. iCallAgent stores and swaps in the new refresh token automatically each time, so it's transparent during normal use. If refresh ever fails, the tool returns a message asking the user to reconnect.