← All integrations

Cal.com

Let an agent book meetings without access to your whole calendar account. It reads event types, free slots and bookings, books, reschedules, cancels, confirms and declines, and each of those can wait for a person.

Cal.comsecret · CALCOM
host
api.cal.com
connect
API key, per user
  • Create booking

    calcom-create-booking

  • Reschedule booking

    calcom-reschedule-booking

  • Cancel booking

    calcom-cancel-booking

  • Confirm booking

    calcom-confirm-booking

writes are off until switched on

Reads and writes in Cal.com. Writes are off until you switch them on.

Each one is a named operation from the pack. Reads change nothing.

Writes

  • Create booking

    read back

    calcom-create-booking

    Book one meeting of an event type for one attendee, at a start time from find-available-slots. Cal.com emails the attendee and the host and adds it to the host's calendar. An event type that needs confirmation creates the booking as pending.

  • Reschedule booking

    read back

    calcom-reschedule-booking

    Move one accepted or pending booking to a new start time. Cal.com cancels the old booking, creates a new one with a new uid, and emails the attendees. A pending booking stays pending.

  • Cancel booking

    read back

    calcom-cancel-booking

    Cancel one booking. Cal.com emails the attendees and the host and removes it from the calendar.

  • Confirm booking

    read back

    calcom-confirm-booking

    Confirm one pending booking of an event type that needs the host's confirmation. Cal.com emails the attendee that it is confirmed.

  • Decline booking

    read back

    calcom-decline-booking

    Decline one pending booking of an event type that needs the host's confirmation. Cal.com emails the attendee, with the reason when given.

  • Mark attendee absent

    read back

    calcom-mark-attendee-absent

    Mark one attendee of a past booking as a no-show. This can start the event type's no-show workflows.

  • Mark host absent

    read back

    calcom-mark-host-absent

    Mark the host of a past booking as a no-show.

  • Add guest

    read back

    calcom-add-guest

    Add one guest to an existing booking. Cal.com emails the guest an invitation and updates the calendar event.

Reads

  • Get me

    calcom-get-me

    Get the Cal.com user the key belongs to: id, username, email, name, time zone and defaultScheduleId. Bookings and event types are read as this user.

  • List event types

    calcom-list-event-types

    List event types, the kinds of meeting that can be booked: id, title, slug, length in minutes, locations, booking fields and booking URL. Without a username it lists the key owner's own event types, hidden ones included. With a username it lists that user's public event types. Cal.com returns them all at once, with no page cursor; an account with very many event types can be cut at 64 KB, so then read one with get-event-type.

  • Get event type

    calcom-get-event-type

    Get one event type: title, slug, length and the lengths a booker may choose, locations, booking fields (including any required custom fields), confirmation policy, recurrence, seats and booking URL.

  • Find available slots

    calcom-find-available-slots

    Find the free times for one event type between two dates, grouped by date, each with a start and an end. Ask for a week or less at a time so the answer stays small. Times come back in time_zone (UTC when left out). Pass booking_uid_to_reschedule when looking for a new time for an existing booking, so its own time counts as free.

  • List schedules

    calcom-list-schedules

    List the key owner's availability schedules: id, name, time zone, weekly hours, date overrides and which one is the default.

  • Get schedule

    calcom-get-schedule

    Get one availability schedule: name, time zone, weekly hours (days with a start and end time), date overrides and whether it is the default. The default schedule's id is defaultScheduleId from get-me.

  • List bookings

    calcom-list-bookings

    List the key owner's bookings, 20 per page: uid, title, status, start and end, event type, location, hosts and attendees. Filter by status (one at a time), attendee email or name, event type, or a time range. Cal.com returns pagination.nextCursor while pagination.hasMore is true; pass it as cursor for the next page.

  • Get booking

    calcom-get-booking

    Get one booking by uid: title, description, status (accepted, pending, cancelled, rejected), start, end, duration, event type, location or meeting link, hosts, attendees with their absent flag, guests, cancellation or rescheduling reason, and the uid it was rescheduled from or to. A recurring booking's own uid returns every occurrence as a list.

  • List booking attendees

    calcom-list-booking-attendees

    List the attendees of one booking, guests included: id, name, email, time zone, language, phone number and whether they were marked absent.

How do users connect? Each one brings their own Cal.com.

  1. 1.Call for the userYour server invokes the action for the signed-in user. Without a Cal.com connection, the SDK throws EndUserNotConnectedError with a connect link.
  2. 2.The user pastes a keyThe link opens a form that shows where in Cal.com's settings to create the key. The link lasts 10 minutes and works once.
  3. 3.Anlyon checks itThe key is checked with Cal.com before it is kept, and bound to api.cal.com. It is never shown back.
  4. 4.Your server confirmsYour server confirms the connection for the user who is signed in, and the call goes through.

Guardrails. Suggested limits and approvals, for you to review.

Suggested limits

  • 20 bookings created a day
  • 20 bookings rescheduled a day
  • 20 bookings cancelled a day
  • 50 bookings confirmed a day
  • 20 bookings declined a day
  • 50 attendees marked absent a day
  • 20 hosts marked absent a day
  • 20 guests added a day

Suggested approvals

  • A person approves creating a booking
  • A person approves rescheduling a booking
  • A person approves cancelling a booking
  • A person approves confirming a booking
  • A person approves declining a booking
  • A person approves marking an attendee absent
  • A person approves marking the host absent
  • A person approves adding a guest

What the key must allow

  • An API key you create
  • It acts as the user who made it, with no narrower permissions

Good to know

  • An event type with required custom booking fields cannot be booked with this pack.
  • Cal.com has no idempotency key for a booking. Anlyon sends it once and never repeats it.

For your own account

  1. 1.In Cal.com, open Settings, Developer, API keys, and create a key.
  2. 2.In Anlyon, open Actions, then Integrations, choose Cal.com and paste the key.
  3. 3.Anlyon checks the key with Cal.com before storing it. It becomes a secret named CALCOM, bound to api.cal.com.

Cal.com in your code. For one of your users, or for your own account.

Act for one of your users from your server, or connect your company's own Cal.com with the CLI.

calcom.ts
import { Client, EndUserNotConnectedError } from "@anlyonhq/sdk";const anlyon = new Client({ apiKey: process.env.ANLYON_API_KEY! });try {  const { data } = await anlyon    .forUser(session.userId)    .actions.invoke("calcom-create-booking", {      event_type_id: "1234567",      start: "2026-11-03T15:00:00Z",      attendee_name: "Sam Rivera",      attendee_email: "sam@example.com",      attendee_time_zone: "America/New_York"    });  return { status: "done", grade: data.grade };} catch (error) {  if (error instanceof EndUserNotConnectedError) {    // The user connects their own Cal.com, then you call again.    return { status: "connect_required", url: error.connectUrl };  }  throw error;}

Let your agent act for your users, safely.

A few lines of server code, then send a user a connect link. Nothing to host.

$ claude mcp add --transport http anlyon https://api.anlyon.com/mcp