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
- Go to Cal.com Platform Settings
- Create a new OAuth application
- Configure your redirect URI
- 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