View as Markdown

Cal.com Integration

Manage Cal.com bookings and schedules

The Cal.com integration provides access to manage Cal.com bookings and schedules through the Integrate MCP server.

Installation

The Cal.com integration is included with the SDK:

import { calcomIntegration } from "integrate-sdk/server";

Setup

1. Create a Cal.com OAuth App

  1. Go to Cal.com Platform Settings
  2. Create a new OAuth application
  3. Configure your redirect URI
  4. Note your Client ID and Client Secret

2. Configure the Integration on Your Server

Add the Cal.com integration to your server configuration. The integration automatically reads CALCOM_CLIENT_ID and CALCOM_CLIENT_SECRET from your environment variables:

import { createMCPServer, calcomIntegration } from "integrate-sdk/server";
 
export const { client: serverClient } = createMCPServer({
  apiKey: process.env.INTEGRATE_API_KEY,
  integrations: [
    calcomIntegration({
    }),
  ],
});

You can override the environment variables by passing explicit values:

calcomIntegration({
  clientId: process.env.CUSTOM_CALCOM_ID,
  clientSecret: process.env.CUSTOM_CALCOM_SECRET,
});

3. Client-Side Usage

The default client automatically includes all integrations. You can use it directly:

import { client } from "integrate-sdk";
 
await client.authorize("calcom");
const result = await client.calcom.listBookings({});
 
console.log(result);

If you're using a custom client, add the integration to the integrations array:

import { createMCPClient, calcomIntegration } from "integrate-sdk";
 
const customClient = createMCPClient({
  integrations: [calcomIntegration()],
});

Configuration Options

export interface CalcomIntegrationConfig {
  /** Cal.com OAuth client ID (defaults to CALCOM_CLIENT_ID env var) */
  clientId?: string;

Tools

calcom_list_bookings

List all bookings

export interface CalcomListBookingsParams {
    /** Filter by status */
    status?: "accepted" | "pending" | "cancelled" | "rejected";

calcom_get_booking

Get booking details

export interface CalcomGetBookingParams {
    /** Booking UID */
    uid: string;

calcom_create_booking

Create a new booking

export interface CalcomCreateBookingParams {
    /** Event type ID */
    eventTypeId: number;

calcom_cancel_booking

Cancel a booking

export interface CalcomCancelBookingParams {
    /** Booking UID */
    uid: string;

calcom_reschedule_booking

Reschedule a booking

export interface CalcomRescheduleBookingParams {
    /** Booking UID */
    uid: string;

calcom_update_booking

Update an existing booking

export interface CalcomUpdateBookingParams {
    /** Booking ID */
    booking_id: string;

calcom_get_booking_recordings

Get recordings for a booking

export interface CalcomGetBookingRecordingsParams {
    /** Booking ID */
    booking_id: string;

calcom_get_booking_transcripts

Get transcripts for a booking

export interface CalcomGetBookingTranscriptsParams {
    /** Booking ID */
    booking_id: string;

calcom_list_event_types

List event types

export interface CalcomListEventTypesParams {
    /** Number of event types to return */
    take?: number;

calcom_get_event_type

Get a specific event type

export interface CalcomGetEventTypeParams {
    /** Event type ID */
    event_type_id: string;

calcom_create_event_type

Create a new event type

export interface CalcomCreateEventTypeParams {
    /** Event type title */
    title: string;

calcom_update_event_type

Update an event type

export interface CalcomUpdateEventTypeParams {
    /** Event type ID */
    event_type_id: string;

calcom_delete_event_type

Delete an event type

export interface CalcomDeleteEventTypeParams {
    /** Event type ID */
    event_type_id: string;

calcom_list_team_event_types

List event types for a team

export interface CalcomListTeamEventTypesParams {
    /** Team ID */
    team_id: string;

calcom_get_availability

Get availability slots

export interface CalcomGetAvailabilityParams {
    /** Event type ID or slug */
    eventTypeId?: number;

calcom_get_availability_rule

Get an availability rule

export interface CalcomGetAvailabilityRuleParams {
    /** Availability rule ID */
    availability_id: string;

calcom_create_availability_rule

Create an availability rule

export interface CalcomCreateAvailabilityRuleParams {
    /** JSON body defining the availability rule */
    body_json: string;

calcom_update_availability_rule

Update an availability rule

export interface CalcomUpdateAvailabilityRuleParams {
    /** Availability rule ID */
    availability_id: string;

calcom_delete_availability_rule

Delete an availability rule

export interface CalcomDeleteAvailabilityRuleParams {
    /** Availability rule ID */
    availability_id: string;

calcom_list_schedules

List schedules

export interface CalcomListSchedulesParams {
    /** Number of schedules to return */
    take?: number;

calcom_get_schedule

Get a specific schedule

export interface CalcomGetScheduleParams {
    /** Schedule ID */
    schedule_id: string;

calcom_create_schedule

Create a new schedule

export interface CalcomCreateScheduleParams {
    /** Schedule name */
    name: string;

calcom_update_schedule

Update a schedule

export interface CalcomUpdateScheduleParams {
    /** Schedule ID */
    schedule_id: string;

calcom_delete_schedule

Delete a schedule

export interface CalcomDeleteScheduleParams {
    /** Schedule ID */
    schedule_id: string;

calcom_get_slots

Get available time slots

export interface CalcomGetSlotsParams {
    /** Start time (ISO 8601) */
    start_time: string;

calcom_list_attendees

List attendees

No parameters.

calcom_get_attendee

Get a specific attendee

export interface CalcomGetAttendeeParams {
    /** Attendee ID */
    attendee_id: string;

calcom_create_attendee

Create a new attendee

export interface CalcomCreateAttendeeParams {
    /** Booking ID to add attendee to */
    booking_id: string;

calcom_update_attendee

Update an attendee

export interface CalcomUpdateAttendeeParams {
    /** Attendee ID */
    attendee_id: string;

calcom_delete_attendee

Delete an attendee

export interface CalcomDeleteAttendeeParams {
    /** Attendee ID */
    attendee_id: string;

calcom_list_teams

List teams

No parameters.

calcom_get_team

Get a specific team

export interface CalcomGetTeamParams {
    /** Team ID */
    team_id: string;

calcom_create_team

Create a new team

export interface CalcomCreateTeamParams {
    /** Team name */
    name: string;

calcom_update_team

Update a team

export interface CalcomUpdateTeamParams {
    /** Team ID */
    team_id: string;

calcom_delete_team

Delete a team

export interface CalcomDeleteTeamParams {
    /** Team ID */
    team_id: string;

calcom_list_memberships

List memberships

No parameters.

calcom_get_membership

Get a specific membership

export interface CalcomGetMembershipParams {
    /** User ID */
    user_id: string;

calcom_create_membership

Create a membership

export interface CalcomCreateMembershipParams {
    /** User ID */
    user_id: string;

calcom_update_membership

Update a membership

export interface CalcomUpdateMembershipParams {
    /** User ID */
    user_id: string;

calcom_delete_membership

Delete a membership

export interface CalcomDeleteMembershipParams {
    /** User ID */
    user_id: string;

calcom_list_webhooks

List webhooks

No parameters.

calcom_get_webhook

Get a specific webhook

export interface CalcomGetWebhookParams {
    /** Webhook ID */
    webhook_id: string;

calcom_create_webhook

Create a webhook

export interface CalcomCreateWebhookParams {
    /** Subscriber URL */
    subscriber_url: string;

calcom_update_webhook

Update a webhook

export interface CalcomUpdateWebhookParams {
    /** Webhook ID */
    webhook_id: string;

calcom_delete_webhook

Delete a webhook

export interface CalcomDeleteWebhookParams {
    /** Webhook ID */
    webhook_id: string;

calcom_list_payments

List payments

No parameters.

calcom_get_payment

Get a specific payment

export interface CalcomGetPaymentParams {
    /** Payment ID */
    payment_id: string;

calcom_list_users

List users

No parameters.

calcom_get_user

Get a specific user

export interface CalcomGetUserParams {
    /** User ID */
    user_id: string;

calcom_create_user

Create a new user

export interface CalcomCreateUserParams {
    /** User email */
    email: string;

calcom_update_user

Update a user

export interface CalcomUpdateUserParams {
    /** User ID */
    user_id: string;

calcom_delete_user

Delete a user

export interface CalcomDeleteUserParams {
    /** User ID */
    user_id: string;

calcom_get_me

Get current user info

No parameters.

Notes

  • Category: Scheduling
  • Authentication mode: OAuth