# Cal.com MCP

> Cal.com MCP manages all your team's scheduling through conversation. Connect this MCP to automate booking appointments, checking real-time availability, and updating event templates directly from your chat client. Stop switching between calendar apps; manage complex calendars—for yourself or a whole department—in one place.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** scheduling, booking, availability, calendar, meeting-management

## Description

Booking meetings used to mean juggling tabs: checking an employee's calendar on Google, opening the CRM for details, and then emailing back and forth just to find three time slots that worked. Now, your agent handles it all. You tell it what you need—say, a 30-minute chat next week with John Doe about Q4 planning—and it finds available times instantly. It doesn't just check for open spots; it manages the entire structure of your organization’s time, including team memberships and who is out of office. Through Vinkius, this MCP lets you define custom meeting types or reschedule an executive's appointment using nothing but natural language. You manage complex schedules, cancellations, and even the underlying event definitions without ever seeing a calendar UI.

## Tools

### cancel_booking
Cancels a previously scheduled meeting using its unique ID.

### charge_credits
Manually charges API usage credits to the associated account.

### create_booking
Schedules a brand new meeting, requiring details like the event type or specific user name.

### create_event_type
Establishes a new template for recurring meetings within your organization's booking system.

### create_membership
Adds a user or group to an existing organizational team structure.

### create_schedule
Sets up a new, dedicated schedule for a specific user or department.

### create_team
Builds a new team container within the organization's structure to group users together.

### create_webhook
Generates a unique URL trigger that executes specific actions when an event occurs.

### get_booking
Retrieves the full details of one single meeting using its unique booking ID.

### get_busy_times
Checks when specific users are unavailable for meetings during a given period.

### get_credits
Pulls the current balance of API usage credits available on your account.

### get_me
Retrieves information about the user who is currently authenticated to the system.

### get_slots
Finds and lists all available time windows for a specified user or group.

### list_bookings
Retrieves an extensive list of all bookings associated with the connected account.

### list_event_types
Lists every predefined meeting template (event type) currently in use by the organization.

### list_out_of_office
Shows all current out-of-office entries and blackout dates for team members.

### list_schedules
Retrieves a list of all organizational schedules that have been created.

### reschedule_booking
Moves an existing meeting to a new date and time, updating all participants.

### update_event_type
Modifies the rules or duration of a previously created event template.

### update_schedule
Makes changes to an existing organizational schedule, such as adding new users or changing its name.

## Prompt Examples

**Prompt:** 
```
List all my upcoming bookings for this month.
```

**Response:** 
```
I've retrieved your upcoming bookings. You have 3 meetings scheduled: 'Product Sync' on Oct 12, 'Client Onboarding' on Oct 15, and 'Team Retro' on Oct 18. Would you like details on any of these?
```

**Prompt:** 
```
Check available slots for user 'johndoe' for the '15-min-chat' event next Monday.
```

**Response:** 
```
Checking availability... For Monday, Oct 16, John Doe has available slots at 10:00 AM, 10:15 AM, 11:30 AM, and 2:00 PM (UTC). Should I book one of these for you?
```

**Prompt:** 
```
Cancel my booking with UID 'bk_12345' because I have a conflict.
```

**Response:** 
```
I have successfully cancelled booking 'bk_12345'. The reason provided was 'conflict'. A notification has been sent to the attendees.
```

## Capabilities

### Book and Modify Appointments
Create new meetings for specific people or define organizational bookings.

### Check Availability Status
Get real-time lists of open time slots, busy times, or overall team availability.

### Manage Event Structures
Define, list, and update the templates (event types) used for recurring meetings across your organization.

### Handle Organizational Teams
Create new teams or manage existing organizational memberships within Cal.com.

## Use Cases

### Setting up a new department kickoff call
The ops engineer needs to find a time for 15 people across three different departments. They ask their agent, which uses get_busy_times and list_out_of_office to check every calendar, then uses create_booking to lock in the first available slot.

### Rescheduling an executive meeting
The EA knows the VP needs to move a client call. They use reschedule_booking with just the old booking ID and the new desired time, ensuring all attendees are updated instantly.

### Creating standard follow-up meetings
A sales rep wants every demo meeting to be 45 minutes long. Instead of manually setting it each time, they use create_event_type to define the 'Demo Call' template once.

### Tracking API usage and billing
The developer needs to ensure the automation agent stays within budget. They run get_credits first, and if needed, manually charge_credits to keep things running smoothly.

## Benefits

- Stop guessing time slots. You can use get_slots to check a user's precise open times and then create_booking to lock it down, all in one conversation.
- Need to update meeting rules? Use list_event_types first to see what templates exist, then update_event_type if you need to change the default length or description for that type.
- Handling cancellations is easy. Instead of emailing confirmations, simply use cancel_booking with a unique ID and your agent notifies everyone involved.
- Running into scheduling roadblocks? Use get_busy_times to check who's unavailable before attempting any booking, preventing frustrating back-and-forth emails.
- The system supports full team governance. You can create new teams via create_team or set up complex departmental schedules using create_schedule.

## How It Works

The bottom line is you get hands-free scheduling. You tell your agent what to book, and it handles all the cross-system checks required to confirm time and place.

1. Subscribe to this MCP on Vinkius and enter your unique Cal.com API key.
2. Your AI client accesses the connector, allowing it to read your organization's current schedules and available time slots.
3. You issue a simple command like 'Book me 30 minutes with Sarah next Tuesday.' The MCP executes the necessary calls and confirms the booking.

## Frequently Asked Questions

**How do I find out when people are free using get_slots?**
get_slots checks the connected users' calendars and returns a list of open time windows for a specific date range. You just need to provide the user ID or name and the desired dates.

**Can I cancel an appointment using cancel_booking?**
Yes, you can cancel any booking if you pass its unique identifier (UID) into the tool. This ensures the right meeting is cancelled while notifying all attendees.

**What does list_bookings do?**
list_bookings retrieves a complete record of every single scheduled appointment under your connected account, allowing you to review past and future meetings easily.

**How does reschedule_booking work?**
reschedule_booking requires the original booking's ID and the new desired time/date. It handles updating all associated details for everyone involved in a single command.

**How do I use `create_event_type` to set up new meeting templates?**
You define your organization's standard booking formats this way. First, run `list_event_types` to see existing options; then, using `create_event_type`, you establish a specific duration or template required for a certain type of client interaction.

**If I need to check the availability across an entire department, how does `list_schedules` work?**
This tool aggregates complex scheduling data. It pulls together calendars from multiple team members and organizational units, letting you view conflicts or available time slots for a whole group at once.

**What should I check first if my booking attempts fail, using the `get_credits` command?**
First, run `get_credits`. This immediately shows your current usage balance against your limit. If you're running low or over budget, you need to manage your API credits before attempting further bookings.

**If I can't book a time because someone is marked unavailable, how does `get_busy_times` explain the conflict?**
This function pulls specific, detailed blocks of unavailability. It tells you exactly when a user is busy and often includes the associated event or reason for the block, so you know why they aren't free.

**Can I check when a user is available for a specific meeting type?**
Yes! Use the `get_slots` tool by providing the username, event slug, and a time range. The agent will return all available time slots for that period.

**Is it possible to reschedule an existing booking through the AI?**
Absolutely. Use the `reschedule_booking` tool with the Booking UID and the new start time. You can also optionally provide a reason for the change.

**Can I manage my organization's event templates?**
Yes, you can use `list_event_types` to see all templates, `create_event_type` to add new ones, and `update_event_type` to modify existing durations or titles.