@aiwerk/mcp-server-cal
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CAL_API_KEY | Yes | Cal.com API key (cal_ or cal_live_ prefix). Required when a tool is called. | |
| CAL_BASE_URL | No | Override the Cal.com API base URL. | https://api.cal.com/v2 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| cal_list_bookingsB | List bookings with optional filters. Optional: status (upcoming|recurring|past|cancelled|unconfirmed), eventTypeId, dateFrom (ISO 8601), dateTo (ISO 8601), limit. |
| cal_get_bookingC | Get details of a specific booking by its UID. Required: uid. |
| cal_create_bookingC | Create a new booking. Required: eventTypeId, start (ISO 8601), attendeeName, attendeeEmail, attendeeTimezone. Optional: notes, guests (array of emails), metadata. |
| cal_cancel_bookingC | Cancel a booking by UID. Required: uid. Optional: cancellationReason. |
| cal_reschedule_bookingA | Reschedule a booking to a new time. Required: uid, newStart (ISO 8601). Optional: reschedulingReason. |
| cal_list_event_typesA | List all event types. Optional: teamId, userId to filter by team or user. |
| cal_get_event_typeB | Get details of a specific event type by ID. Required: id. |
| cal_create_event_typeB | Create a new event type. Required: title, slug, lengthInMinutes. Optional: description, locations, hidden, metadata. |
| cal_update_event_typeB | Update an existing event type. Required: id. Optional fields to update: title, slug, lengthInMinutes, description, locations, hidden, metadata. |
| cal_delete_event_typeC | Delete an event type by ID. Required: id. |
| cal_get_availabilityA | Get available time slots for an event type in a date range. Required: eventTypeId, dateFrom (ISO 8601), dateTo (ISO 8601). Optional: timeZone. |
| cal_list_schedulesA | List all schedules (working hours and availability rules). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| daily-schedule | Summarize today's schedule — shows all bookings and free slots |
| find-free-slot | |
| reschedule-suggestion |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| upcoming-bookings | Upcoming bookings for today and tomorrow — automatically available in context |
| event-types | All configured event types — know what can be booked |
| schedules | Working hours and availability rules |
TDQS
Scored across 12 tools
Each tool targets a distinct action on a specific resource (booking, event type, availability, schedule). No overlapping purposes; clear boundaries between list vs get, create vs update, etc.
All tools follow the 'cal_verb_noun' pattern in snake_case, with consistent verbs (list, get, create, update, delete, cancel, reschedule). No mixing of conventions.
12 tools is a reasonable number for a scheduling server. It covers the main workflows without being excessive. Missing schedule CRUD tools, but core functionality is well-scoped.
Bookings have create, get, list, cancel, reschedule (missing update of details). Event types have full CRUD. Schedules only have list, lacking create/update/delete. Availability is read-only. Some gaps in booking update and schedule management.