productivity
Cal.com CLI for AI Agents
Use the Cal.com CLI from KosmoKrator to call Cal.com tools headlessly, return JSON, inspect schemas, and automate workflows from coding agents, scripts, and CI.Cal.com CLI Setup
Cal.com can be configured headlessly with `kosmokrator integrations:configure cal`.
# Install KosmoKrator first if it is not available on PATH.
curl -fsSL https://raw.githubusercontent.com/OpenCompanyApp/kosmokrator/main/install.sh | bash
# Configure and verify this integration.
kosmokrator integrations:configure cal --set access_token="$CAL_ACCESS_TOKEN" --enable --read allow --write ask --json
kosmokrator integrations:doctor cal --json
kosmokrator integrations:status --json Credentials
Authentication type: Bearer token bearer_token. Configure credentials once, then reuse the same stored profile from scripts, coding CLIs, Lua, and MCP.
| Key | Env var | Type | Required | Label |
|---|---|---|---|---|
access_token | CAL_ACCESS_TOKEN | Secret secret | yes | Access Token |
url | CAL_URL | URL url | no | API Base URL |
Command Patterns
The generic command is stable across every integration. The provider shortcut is shorter for humans.
kosmo integrations:call cal.cal_list_event_types '{"limit":1,"page":1,"team_id":1}' --json kosmo integrations:cal cal_list_event_types '{"limit":1,"page":1,"team_id":1}' --json Discovery
These commands return structured output for coding agents that need to inspect capabilities before choosing a function.
kosmo integrations:docs cal --json
kosmo integrations:docs cal.cal_list_event_types --json
kosmo integrations:schema cal.cal_list_event_types --json
kosmo integrations:search "Cal.com" --json
kosmo integrations:list --json Automation Contexts
The same configured command surface works in these environments. The command does not change unless the host wrapper, credentials, or permissions change.
CLI Functions
Every function below can be called headlessly. Commands are highlighted, copyable, and scroll horizontally when payloads are long.
cal.cal_list_event_types
List available event types (booking link templates) from Cal.com. Supports filtering by team and pagination.
read - Parameters
- limit, page, team_id
kosmo integrations:call cal.cal_list_event_types '{"limit":1,"page":1,"team_id":1}' --json kosmo integrations:cal cal_list_event_types '{"limit":1,"page":1,"team_id":1}' --json cal.cal_get_event_type
Get detailed information about a specific event type from Cal.com by its ID.
read - Parameters
- id
kosmo integrations:call cal.cal_get_event_type '{"id":1}' --json kosmo integrations:cal cal_get_event_type '{"id":1}' --json cal.cal_list_bookings
List bookings from Cal.com with optional filtering by status, event type, and pagination.
read - Parameters
- limit, page, status, event_type_id
kosmo integrations:call cal.cal_list_bookings '{"limit":1,"page":1,"status":"example_status","event_type_id":1}' --json kosmo integrations:cal cal_list_bookings '{"limit":1,"page":1,"status":"example_status","event_type_id":1}' --json cal.cal_get_booking
Get detailed information about a specific booking from Cal.com by its ID or UID.
read - Parameters
- id
kosmo integrations:call cal.cal_get_booking '{"id":"example_id"}' --json kosmo integrations:cal cal_get_booking '{"id":"example_id"}' --json cal.cal_create_booking
Create a new booking in Cal.com for a specific event type. Provide the event type, start/end times, and attendee information.
write - Parameters
- event_type_id, start, end, responses
kosmo integrations:call cal.cal_create_booking '{"event_type_id":1,"start":"example_start","end":"example_end","responses":"example_responses"}' --json kosmo integrations:cal cal_create_booking '{"event_type_id":1,"start":"example_start","end":"example_end","responses":"example_responses"}' --json cal.cal_cancel_booking
Cancel a Cal.com booking by booking UID.
write - Parameters
- booking_uid, body
kosmo integrations:call cal.cal_cancel_booking '{"booking_uid":"example_booking_uid","body":"example_body"}' --json kosmo integrations:cal cal_cancel_booking '{"booking_uid":"example_booking_uid","body":"example_body"}' --json cal.cal_reschedule_booking
Reschedule a Cal.com booking by booking UID.
write - Parameters
- booking_uid, body
kosmo integrations:call cal.cal_reschedule_booking '{"booking_uid":"example_booking_uid","body":"example_body"}' --json kosmo integrations:cal cal_reschedule_booking '{"booking_uid":"example_booking_uid","body":"example_body"}' --json cal.cal_get_current_user
Get the authenticated Cal.com user's profile information, including name, email, and time zone.
read - Parameters
- none
kosmo integrations:call cal.cal_get_current_user '{}' --json kosmo integrations:cal cal_get_current_user '{}' --json cal.cal_api_get
Call any Cal.com v2 GET API endpoint.
read - Parameters
- path, params
kosmo integrations:call cal.cal_api_get '{"path":"example_path","params":"example_params"}' --json kosmo integrations:cal cal_api_get '{"path":"example_path","params":"example_params"}' --json cal.cal_api_post
Call any Cal.com v2 POST API endpoint.
write - Parameters
- path, body
kosmo integrations:call cal.cal_api_post '{"path":"example_path","body":"example_body"}' --json kosmo integrations:cal cal_api_post '{"path":"example_path","body":"example_body"}' --json cal.cal_api_patch
Call any Cal.com v2 PATCH API endpoint.
write - Parameters
- path, body
kosmo integrations:call cal.cal_api_patch '{"path":"example_path","body":"example_body"}' --json kosmo integrations:cal cal_api_patch '{"path":"example_path","body":"example_body"}' --json cal.cal_api_delete
Call any Cal.com v2 DELETE API endpoint.
write - Parameters
- path, body
kosmo integrations:call cal.cal_api_delete '{"path":"example_path","body":"example_body"}' --json kosmo integrations:cal cal_api_delete '{"path":"example_path","body":"example_body"}' --json Function Schemas
Use these parameter tables when building CLI payloads without calling integrations:schema first.
cal.cal_list_event_types 3 parameters
kosmo integrations:schema cal.cal_list_event_types --json | Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | no | Maximum number of event types to return per page. |
page | integer | no | Page number for pagination (starts at 1). |
team_id | integer | no | Filter event types belonging to a specific team by its ID. |
cal.cal_get_event_type 1 parameters
kosmo integrations:schema cal.cal_get_event_type --json | Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | yes | The event type ID. |
cal.cal_list_bookings 4 parameters
kosmo integrations:schema cal.cal_list_bookings --json | Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | no | Maximum number of bookings to return per page. |
page | integer | no | Page number for pagination (starts at 1). |
status | string | no | Filter by booking status: "confirmed", "pending", "cancelled", or "rejected". |
event_type_id | integer | no | Filter bookings for a specific event type by its ID. |
cal.cal_get_booking 1 parameters
kosmo integrations:schema cal.cal_get_booking --json | Parameter | Type | Required | Description |
|---|---|---|---|
id | string | yes | The booking ID or UID. |
cal.cal_create_booking 4 parameters
kosmo integrations:schema cal.cal_create_booking --json | Parameter | Type | Required | Description |
|---|---|---|---|
event_type_id | integer | yes | The event type ID to book. |
start | string | yes | Start time in ISO 8601 format (e.g., "2026-04-10T09:00:00Z"). |
end | string | yes | End time in ISO 8601 format (e.g., "2026-04-10T09:30:00Z"). |
responses | object | yes | Attendee responses. Must include "name" and "email". Example: {"name": "Jane Example", "email": "jane@example.test", "notes": "Optional notes."}. |
cal.cal_cancel_booking 2 parameters
kosmo integrations:schema cal.cal_cancel_booking --json | Parameter | Type | Required | Description |
|---|---|---|---|
booking_uid | string | yes | Booking UID. |
body | object | no | Optional cancellation payload such as reason. |
cal.cal_reschedule_booking 2 parameters
kosmo integrations:schema cal.cal_reschedule_booking --json | Parameter | Type | Required | Description |
|---|---|---|---|
booking_uid | string | yes | Booking UID. |
body | object | yes | Reschedule payload, usually including start and related booking fields. |
cal.cal_get_current_user 0 parameters
kosmo integrations:schema cal.cal_get_current_user --json | Parameter | Type | Required | Description |
|---|---|---|---|
| No parameters. | |||
cal.cal_api_get 2 parameters
kosmo integrations:schema cal.cal_api_get --json | Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | API path such as /bookings or /slots. |
params | object | no | Query parameters. |
cal.cal_api_post 2 parameters
kosmo integrations:schema cal.cal_api_post --json | Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | API path. |
body | object | no | JSON body. |
cal.cal_api_patch 2 parameters
kosmo integrations:schema cal.cal_api_patch --json | Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | API path. |
body | object | no | JSON body. |
cal.cal_api_delete 2 parameters
kosmo integrations:schema cal.cal_api_delete --json | Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | API path. |
body | object | no | JSON body. |
Permissions
Headless calls still follow the integration read/write permission policy. Configure read/write defaults with
integrations:configure. Add --force only for trusted automation that should bypass that policy.