Knowledge & tools

Calendly tool

The Calendly tool gives an agent the full Calendly v2 scheduling surface — event types, real-time availability, scheduled meetings and invitees, single-use booking links, cancellations, no-shows, memberships, and webhooks — behind a single action the agent picks per call. One credential: a Calendly Personal Access Token.

Booking is a link, not a direct event. Calendly has no API to create a booked meeting. To book, the agent calls create_scheduling_link, which returns a single-use booking_url the invitee opens to pick a slot. Design flows around sending that link.
Automatic account awareness. When the agent omits user / organization, the tool resolves them from your account — so "list my event types / my availability / my meetings" works with no ids. No setup required beyond the token.

Connect Calendly

The single credential is a Personal Access Token:

  1. Sign in to Calendly → Integrations & apps → API & webhooks.
  2. Under Personal access tokens, click Generate new token, name it (e.g. "Hania"), and Generate.
  3. Copy it immediately — Calendly shows the token only once.
  4. Paste it into the Personal Access Token field and save. It's stored encrypted and never shown again (leave blank on edit to keep it).

One token = one Calendly account. Webhook actions require a paid (Standard+) plan.

Capabilities

The agent picks one action per call (24 in total), grouped by resource:

  • Users / orgget_current_user, get_user (uuid), list_organization_memberships, get_organization_membership (uuid).
  • Event typeslist_event_types, get_event_type (uuid), create_one_off_event_type (name, duration, date_setting, location).
  • Scheduled eventslist_scheduled_events (filters: status, invitee_email, min/max_start_time), get_scheduled_event (uuid), cancel_scheduled_event (uuid, optional reason), list_event_invitees (event_uuid), get_invitee (event_uuid, invitee_uuid).
  • Availabilitylist_event_type_available_times (event_type, start_time, end_time), list_user_busy_times (start_time, end_time), list_user_availability_schedules, get_availability_schedule (uuid).
  • Bookingcreate_scheduling_link (owner = event-type URI) → returns booking_url.
  • No-showscreate_invitee_no_show (invitee), get_invitee_no_show (uuid), delete_invitee_no_show (uuid).
  • Webhooks (paid plan) — list_webhook_subscriptions (scope), create_webhook_subscription (url, events, scope), get_webhook_subscription (uuid), delete_webhook_subscription (uuid).

Field reference

  • Path ids (uuid, event_uuid, invitee_uuid) — accept a bare id or the full Calendly URL/URI (the tool uses the last path segment).
  • URI references (user, organization, event_type, owner, invitee) — full Calendly URIs returned by the list_* actions. Leave user/organization blank to use your own account.
  • Availability window (start_time / end_time) — ISO-8601 UTC, must be in the future and span ≤ 7 days (a Calendly hard limit).
  • max_event_count (booking link) — default 1 (one-time booking).
  • events (webhook) — array, e.g. invitee.created, invitee.canceled.

Common recipes

  • Show the caller open timeslist_event_type_available_times for an event type within a ≤7-day window.
  • Send a booking linkcreate_scheduling_link with the event-type URI as owner; share the returned booking_url.
  • Look up / cancel a meetinglist_scheduled_events (filter by invitee email) → cancel_scheduled_event with an optional reason.
  • Check the principal's availabilitylist_user_busy_times over a date range (account resolved automatically).

Behaviors & gotchas

  • Availability is real-time and capped at a 7-day future window per call.
  • Cancellation is real and irreversiblecancel_scheduled_event actually cancels and notifies the invitee. Bot instructions should guard it ("only when asked").
  • Booking = a link, not a direct event (see the callout above).

Errors & plan limits

Calendly returns a {title, message, details[]} envelope, surfaced verbatim in trace/debug panels:

  • 403 Permission Denied — a webhook action on a free plan; upgrade to Standard+.
  • 404 — bad id/URI on a get/cancel/delete.
  • 400 with details[] — validation (e.g. availability window > 7 days, or a past start_time); each entry names the offending parameter.
  • Misconfigured — a missing token is caught before any network call.

Classification & lifecycle

This is a read and write tool, and it can cancel meetings. If you run it on an autonomous bot, set its safety classification to match. It's post-call-hook eligible (runs outside the LLM turn) — e.g. send a booking link or log a no-show after the call.

Calendly powers several scheduling blueprints (appointment reminder caller, medical front desk, real-estate lead qualifier, executive assistant, office administrator, virtual receptionist). Instantiate one and just supply your Calendly token — the scheduling guidance is built in.