# Calendly — how to use (mcp.ai)

Calendly is an appointment scheduling tool that automates meeting invitations, availability checks, and reminders, helping individuals and teams avoid email back-and-forth

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_calendly?ms=1781542020000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `calendly_cancel_event`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/calendly`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/calendly/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/calendly/cancel/event` — Permanently cancels an existing, active scheduled event by its `uuid`, optionally providing a `reason`, which may trigger notifications to invitees.
  - body: { uuid: string, reason?: string }
- `POST https://api.mcp.ai/api/calendly/create/invitee/no/show` — Marks an invitee, identified by their existing and valid uri, as a 'no show' for a scheduled event.
  - body: { invitee?: string }
- `POST https://api.mcp.ai/api/calendly/create/one/off/event/type` — Creates a temporary calendly one-off event type for unique meetings outside regular availability, requiring valid host/co-host uris, a future date/range for `date setting`, and a positive `duration`.
  - body: { host: string, name: string, duration: integer, location?: object, timezone?: string, date_setting: object, only_weekdays?: boolean }
- `POST https://api.mcp.ai/api/calendly/create/scheduling/link` — Create a single-use scheduling link. creates a scheduling link that can be used to book an event. the link allows invitees to schedule up to the specified maximum number of events. once the limit is r
  - body: { owner: string, owner_type?: string, max_event_count: integer }
- `POST https://api.mcp.ai/api/calendly/create/share` — Creates a customizable, one-time share link for a calendly event type, allowing specific overrides to its settings (e.g., duration, availability, location) without altering the original event type.
  - body: { name?: string, duration?: integer, end_date?: string, event_type: string, start_date?: string, period_type?: string, hide_location?: boolean, duration_options?: integer[], max_booking_time?: integer, location_configurations?: object[], availability__rule__rules?: object[], availability__rule__timezone?: string }
- `POST https://api.mcp.ai/api/calendly/create/single/use/scheduling/link` — Creates a one-time, single-use scheduling link for an active calendly event type, expiring after one booking.
  - body: { owner: string, owner_type: string, max_event_count: integer }
- `POST https://api.mcp.ai/api/calendly/create/webhook/subscription` — Creates a calendly webhook subscription to notify a specified `url` (which must be a publicly accessible https endpoint) for selected `events` within a given `organization` and `scope`.
  - body: { url: string, user?: string, group?: string, scope: string, events: string[], signing_key?: string, organization: string }
- `POST https://api.mcp.ai/api/calendly/delete/invitee/data` — Permanently removes all invitee data associated with the provided emails from past organization events, for data privacy compliance (requires enterprise subscription; deletion may take up to one week)
  - body: { emails: string[] }
- `POST https://api.mcp.ai/api/calendly/delete/invitee/no/show` — Deletes an invitee no-show record by its `uuid` to reverse an invitee's 'no-show' status; the `uuid` must refer to an existing record.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/delete/scheduled/event/data` — For enterprise users, initiates deletion of an organization's scheduled event data between a `start time` and `end time` (inclusive, where `start time` must be <= `end time`); actual data deletion may
  - body: { end_time: string, start_time: string }
- `POST https://api.mcp.ai/api/calendly/delete/webhook/subscription` — Deletes an existing webhook subscription to stop calendly sending event notifications to its registered callback url; this operation is idempotent.
  - body: { webhook_uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/current/user` — Retrieves detailed information about the currently authenticated calendly user.
- `POST https://api.mcp.ai/api/calendly/get/event` — Use to retrieve a specific calendly scheduled event by its uuid, provided the event exists in the user's calendly account.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/event/invitee` — Retrieves detailed information about a specific invitee of a scheduled event, using their unique uuids.
  - body: { event_uuid: string, invitee_uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/event/type` — Retrieves details for a specific calendly event type, identified by its uuid, which must be valid and correspond to an existing event type.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/group` — Retrieves all attributes of a specific calendly group by its uuid; the group must exist.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/group/relationship` — Retrieves a specific calendly group relationship by its valid and existing uuid, providing details on user-group associations and membership.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/invitee/no/show` — Retrieves details for a specific invitee no show record by its uuid; an invitee no show is marked when an invitee does not attend a scheduled event.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/organization/invitation` — Retrieves a specific calendly organization invitation using its uuid and the parent organization's uuid.
  - body: { uuid: string, org_uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/organization/membership` — Retrieves a specific calendly organization membership by its uuid, returning all its attributes.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/routing/form` — Retrieves a specific routing form by its uuid, providing its configuration details including questions and routing logic.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/user` — Retrieves comprehensive details for an existing calendly user.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/user/availability/schedule` — Retrieves an existing user availability schedule by its uuid; this schedule defines the user's default hours of availability.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/get/webhook/subscription` — Retrieves the details of an existing webhook subscription, identified by its uuid, including its callback url, subscribed events, scope, and state.
  - body: { webhook_uuid: string }
- `POST https://api.mcp.ai/api/calendly/invite/user/to/organization` — Invites a user to the specified calendly organization by email, if they aren't already a member and lack a pending invitation to it.
  - body: { uuid: string, email: string }
- `POST https://api.mcp.ai/api/calendly/list/activity/log/entries` — Retrieves a list of activity log entries for a specified calendly organization (requires an active enterprise subscription), supporting filtering, sorting, and pagination.
  - body: { sort?: string[], actor?: string[], count?: integer, action?: string[], namespace?: string[], page_token?: string, search_term?: string, organization: string, max_occurred_at?: string, min_occurred_at?: string }
- `POST https://api.mcp.ai/api/calendly/list/event/invitees` — Retrieves a list of invitees for a specified calendly event uuid, with options to filter by status or email, and sort by creation time.
  - body: { sort?: string, uuid: string, count?: integer, email?: string, status?: string, page_token?: string }
- `POST https://api.mcp.ai/api/calendly/list/event/type/available/times` — Fetches available time slots for a calendly event type within a specified time range; results are not paginated.
  - body: { end_time: string, event_type: string, start_time: string }
- `POST https://api.mcp.ai/api/calendly/list/event/type/hosts` — Retrieves a list of hosts (users) assigned to a specific, existing calendly event type, identified by its uri.
  - body: { count?: integer, event_type: string, page_token?: string }
- `POST https://api.mcp.ai/api/calendly/list/events` — Retrieves a list of scheduled calendly events; requires `user`, `organization`, `group`, or `invitee email` for scope, and admin rights may be needed when filtering by `organization` or `group`.
  - body: { sort?: string, user?: string, count?: integer, group?: string, status?: string, page_token?: string, organization?: string, invitee_email?: string, max_start_time?: string, min_start_time?: string }
- `POST https://api.mcp.ai/api/calendly/list/group/relationships` — Retrieves a list of group relationships defining an owner's role (e.g., member, admin) within a group; an owner can have one membership per group but multiple admin roles across different groups.
  - body: { count?: integer, group?: string, owner?: string, page_token?: string, organization?: string }
- `POST https://api.mcp.ai/api/calendly/list/groups` — Returns a list of groups for a specified calendly organization uri, supporting pagination.
  - body: { count?: integer, page_token?: string, organization: string }
- `POST https://api.mcp.ai/api/calendly/list/organization/invitations` — Retrieves a list of invitations for a specific organization, identified by its uuid.
  - body: { sort?: string, uuid: string, count?: integer, email?: string, status?: string, page_token?: string }
- `POST https://api.mcp.ai/api/calendly/list/organization/memberships` — Retrieves a list of organization memberships.
  - body: { user?: string, count?: integer, email?: string, page_token?: string, organization?: string }
- `POST https://api.mcp.ai/api/calendly/list/outgoing/communications` — Retrieves a list of outgoing sms communications for a specified organization; requires an enterprise subscription and if filtering by creation date, both `min created at` and `max created at` must be 
  - body: { count?: integer, page_token?: string, organization: string, max_created_at?: string, min_created_at?: string }
- `POST https://api.mcp.ai/api/calendly/list/routing/forms` — Retrieves routing forms for a specified organization; routing forms are questionnaires used to direct invitees to appropriate booking pages or external urls.
  - body: { sort?: string, count?: integer, page_token?: string, organization: string }
- `POST https://api.mcp.ai/api/calendly/list/user/availability/schedules` — Retrieves all availability schedules for the specified calendly user.
  - body: { user: string }
- `POST https://api.mcp.ai/api/calendly/list/user/busy/times` — Fetches a user's busy time intervals (internal and external calendar events) in ascending order for a period up to 7 days; keyset pagination is not supported.
  - body: { user: string, end_time: string, start_time: string }
- `POST https://api.mcp.ai/api/calendly/list/user/s/event/types` — Retrieves event types for a user or organization; requires either the `user` or `organization` uri.
  - body: { sort?: string, user?: string, count?: integer, active?: boolean, page_token?: string, organization?: string, admin_managed?: boolean, user_availability_schedule?: string }
- `POST https://api.mcp.ai/api/calendly/list/webhook/subscriptions` — Retrieves webhook subscriptions for a calendly organization; `scope` determines if `user` or `group` uri is also required for filtering.
  - body: { sort?: string, user?: string, count?: integer, group?: string, scope: string, page_token?: string, organization: string }
- `POST https://api.mcp.ai/api/calendly/remove/user/from/organization` — Removes a user (who is not an owner) from an organization by their membership uuid, requiring administrative privileges.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/calendly/revoke/user/s/organization/invitation` — Revokes a pending and revokable (not yet accepted or expired) organization invitation using its uuid and the organization's uuid, rendering the invitation link invalid.
  - body: { uuid: string, org_uuid: string }

## More
- Page: https://mcp.ai/calendly
- Agent spec (llms.txt): https://mcp.ai/calendly/llms.txt
- Postman collection: https://mcp.ai/calendly/postman.json
