<!-- Generated by `just docs` from catalog/toolkits/calendly.yaml, catalog/expansions/calendly.yaml, catalog/evals/scorecard.json. Edit the source, not this file. -->

# Calendly

Meeting scheduling. Look up event types and booked meetings, read invitee and availability data, and hand out booking links.

| Property | Value |
| --- | --- |
| Slug | `calendly` |
| Definition version | `0.1.0` |
| Base URL | `https://api.calendly.com` |
| Auth schemes | `oauth2`, `api_key` |
| Action tools | 31 |
| By class | 23 read, 3 write, 5 destructive |
| Triggers | 0 |
| Provider rate limit | not declared, so outbound calls are unpaced |

## Measured routing accuracy

62 golden cases replayed through the router over the whole index: measured over corpus `ea4f12ad2948` (65 toolkits, 2283 tools indexed and 13 declared uncallable), 31 cases written by hand and 31 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

| Measure | Cases | Share |
| --- | --- | --- |
| top-1 | 28/62 | 45.2% |
| top-8 | 56/62 | 90.3% |

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. `just eval-live` measures the same cases through the live reranker.

## Authentication

Connect an entity with `ConnectionsService.InitiateConnection`, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

### `oauth2`

| Property | Value |
| --- | --- |
| Authorization URL | `https://auth.calendly.com/oauth/authorize` |
| Token URL | `https://auth.calendly.com/oauth/token` |
| Refresh tokens | yes, the refresh daemon renews ahead of expiry |

### `api_key`

| Property | Value |
| --- | --- |
| Placement | `header` |
| Name | `Authorization` |
| Rendered as | `Bearer {key}` |

Submit the key with `ConnectionsService` rather than putting it in a request; it is sealed at rest and never returned.

## Tools

31 action tools. The catalog-wide slug is `calendly.<tool>`, which is what `search_tools` returns and `call_tool` takes.

### `calendly.get_current_user`

Get the connected Calendly account's own profile: name, email, scheduling_url, timezone, and the uri fields for the user and their organization that other Calendly tools filter by. Use when the user asks about their own Calendly account, booking link, or time zone, or before calling a tool that needs the user's or organization's uri.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /users/me`.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.avatar_url` | string |  |
| `resource.created_at` | string |  |
| `resource.current_organization` | string |  |
| `resource.email` | string |  |
| `resource.name` | string |  |
| `resource.scheduling_url` | string |  |
| `resource.slug` | string |  |
| `resource.timezone` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what's my calendly account", "show my scheduling link", "what time zone is my calendly set to", "pull up my own calendly profile", "what's my booking page url".

### `calendly.get_user`

Look up another Calendly user's profile by user uuid: name, email, scheduling_url, and time zone. Use when the user asks about a teammate's Calendly account or booking page rather than their own; for the connected account itself use get_current_user.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /users/{{params.user_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `user_uuid` | string | **yes** | Calendly user uuid, the last path segment of a user's uri field from get_current_user or list_organization_memberships. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.avatar_url` | string |  |
| `resource.current_organization` | string |  |
| `resource.email` | string |  |
| `resource.name` | string |  |
| `resource.scheduling_url` | string |  |
| `resource.slug` | string |  |
| `resource.timezone` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "look up a teammate's calendly profile", "what's sam's booking link", "find someone else's scheduling page", "check a coworker's calendly time zone".

### `calendly.list_event_types`

List a Calendly user or organization's event types: the meeting templates people book against (30-minute call, demo, office hours), with each one's name, duration, scheduling_url, and active state. Use when the user asks what kinds of meetings they offer or wants the booking link for a specific meeting type. Calendly event types are read-only through this API; there is no create or update tool.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /event_types`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `active` | boolean | no | Filter to only active (true) or only inactive (false) event types. |
| `count` | integer | no | Results per page, default 20. |
| `organization` | string | no | Full Calendly organization uri to list event types for. |
| `page_token` | string | no | Token from a previous page's pagination.next_page_token. |
| `user` | string | no | Full Calendly user uri to list event types for. Omit and set organization instead to list every event type in the org. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].active` | boolean |  |
| `collection[].color` | string |  |
| `collection[].duration` | integer |  |
| `collection[].kind` | string |  |
| `collection[].name` | string |  |
| `collection[].scheduling_url` | string |  |
| `collection[].slug` | string |  |
| `collection[].uri` | string |  |
| `pagination` | object |  |
| `pagination.next_page_token` | string |  |

Also retrieved by: "what meeting types do I offer", "show me my calendly booking templates", "what can people book with me", "what's the link for my demo call", "list the kinds of calls people can schedule with me", "what event types does the team have set up".

### `calendly.get_event_type`

Get one Calendly event type's full details by uuid: name, duration, scheduling_url, description, and booking questions. Use after list_event_types or when the user already names a specific meeting type they want details on, such as before create_scheduling_link or list_event_type_available_times.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /event_types/{{params.event_type_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `event_type_uuid` | string | **yes** | Event type uuid from list_event_types. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.active` | boolean |  |
| `resource.description_plain` | string |  |
| `resource.duration` | integer |  |
| `resource.kind` | string |  |
| `resource.name` | string |  |
| `resource.scheduling_url` | string |  |
| `resource.slug` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what does this meeting type include", "pull up the details for that booking template", "what questions does that meeting type ask", "show me the setup for that specific event type".

### `calendly.list_event_type_available_times`

List the open booking slots for a Calendly event type within a time window (at most 7 days). Use when the user asks when someone is free to meet, what times a meeting type has open, or before pointing someone at a booking link. For a person's raw busy blocks instead of open slots use list_user_busy_times.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /event_type_available_times`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `end_time` | string | **yes** | Window end, ISO 8601. Calendly limits this window to 7 days from start_time. |
| `event_type` | string | **yes** | Full Calendly event type uri from list_event_types or get_event_type. |
| `start_time` | string | **yes** | Window start, ISO 8601, e.g. "2026-08-01T00:00:00Z". |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].invitees_remaining` | integer |  |
| `collection[].scheduling_url` | string |  |
| `collection[].start_time` | string |  |
| `collection[].status` | string |  |

Also retrieved by: "when is sam free for a demo call this week", "what slots are open for the intro call", "show me the openings on that booking template", "when can someone book that meeting type".

### `calendly.list_scheduled_events`

List Calendly meetings that have been booked for a user or organization, active or canceled, in a time range. Use when the user asks what's on their Calendly schedule, wants to find a booked meeting to look at or cancel, or asks who has booked time with them recently.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /scheduled_events`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `count` | integer | no | Results per page, default 20. |
| `invitee_email` | string | no | Filter to events booked by this invitee email. |
| `max_start_time` | string | no | Only events starting before this ISO 8601 time. |
| `min_start_time` | string | no | Only events starting at or after this ISO 8601 time. |
| `organization` | string | no | Full Calendly organization uri to list scheduled events for. |
| `page_token` | string | no | Token from a previous page's pagination.next_page_token. |
| `status` | string, one of active, canceled | no | Filter by event status. Omit to return both. |
| `user` | string | no | Full Calendly user uri to list scheduled events for. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].end_time` | string |  |
| `collection[].event_type` | string |  |
| `collection[].invitees_counter` | object |  |
| `collection[].invitees_counter.active` | integer |  |
| `collection[].invitees_counter.total` | integer |  |
| `collection[].location` | object |  |
| `collection[].location.join_url` | string |  |
| `collection[].location.type` | string |  |
| `collection[].name` | string |  |
| `collection[].start_time` | string |  |
| `collection[].status` | string |  |
| `collection[].uri` | string |  |
| `pagination` | object |  |
| `pagination.next_page_token` | string |  |

Also retrieved by: "what's on my calendly schedule this week", "who's booked time with me lately", "show me my upcoming calendly meetings", "what calls do I have booked", "pull up everything scheduled through calendly".

### `calendly.get_scheduled_event`

Get one booked Calendly meeting's full details by event uuid: time, location or join link, event type, and invitee counts. Use after list_scheduled_events or when the user already has a specific meeting's uuid, such as before cancel_scheduled_event or list_event_invitees.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /scheduled_events/{{params.event_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `event_uuid` | string | **yes** | Scheduled event uuid from list_scheduled_events. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.end_time` | string |  |
| `resource.event_type` | string |  |
| `resource.invitees_counter` | object |  |
| `resource.invitees_counter.active` | integer |  |
| `resource.invitees_counter.total` | integer |  |
| `resource.location` | object |  |
| `resource.location.join_url` | string |  |
| `resource.location.type` | string |  |
| `resource.name` | string |  |
| `resource.start_time` | string |  |
| `resource.status` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what time is that booked meeting", "pull up the details on that calendly call", "what's the join link for that meeting", "show me info on a specific booked session".

### `calendly.cancel_scheduled_event`

Cancel a booked Calendly meeting by event uuid, notifying every invitee. Use when the user wants to cancel, call off, or remove a meeting someone booked on their calendar. Unrecoverable: a cancelled Calendly event cannot be reinstated, only rebooked.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `POST /scheduled_events/{{params.event_uuid}}/cancellation`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `event_uuid` | string | **yes** | Scheduled event uuid to cancel. |
| `reason` | string | no | Optional free-text reason shown to invitees in the cancellation notice. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.canceled_by` | string |  |
| `resource.canceler_type` | string |  |
| `resource.reason` | string |  |

Also retrieved by: "call off that booked meeting", "cancel the session someone scheduled with me", "get rid of that calendly booking", "I need to cancel a call someone set up".

### `calendly.list_event_invitees`

List the people who booked a specific Calendly meeting, with each person's email, status, and their answers to the event type's booking questions. Use when the user asks who is coming to a meeting, who booked a slot, or wants a specific attendee's answers.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /scheduled_events/{{params.event_uuid}}/invitees`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `count` | integer | no | Results per page, default 20. |
| `email` | string | no | Filter to one invitee's email. |
| `event_uuid` | string | **yes** | Scheduled event whose invitees to list. |
| `page_token` | string | no | Token from a previous page's pagination.next_page_token. |
| `status` | string, one of active, canceled | no | Filter by invitee status. Omit to return both. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].cancel_url` | string |  |
| `collection[].email` | string |  |
| `collection[].name` | string |  |
| `collection[].questions_and_answers` | array of object |  |
| `collection[].questions_and_answers[].answer` | string |  |
| `collection[].questions_and_answers[].question` | string |  |
| `collection[].reschedule_url` | string |  |
| `collection[].status` | string |  |
| `collection[].timezone` | string |  |
| `collection[].uri` | string |  |
| `pagination` | object |  |
| `pagination.next_page_token` | string |  |

Also retrieved by: "who booked that meeting", "show me everyone coming to that call", "who signed up for that time slot", "what did the attendee answer on the booking form".

### `calendly.get_event_invitee`

Get one Calendly meeting invitee's full details by event uuid and invitee uuid: email, status, time zone, and booking-question answers. Use after list_event_invitees or when the user already has a specific attendee's uuid.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /scheduled_events/{{params.event_uuid}}/invitees/{{params.invitee_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `event_uuid` | string | **yes** | Scheduled event the invitee belongs to. |
| `invitee_uuid` | string | **yes** | Invitee uuid from list_event_invitees. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.email` | string |  |
| `resource.name` | string |  |
| `resource.questions_and_answers` | array of object |  |
| `resource.questions_and_answers[].answer` | string |  |
| `resource.questions_and_answers[].question` | string |  |
| `resource.status` | string |  |
| `resource.timezone` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what did that specific person answer when they booked", "pull up one attendee's booking details", "check a single invitee's info for that meeting".

### `calendly.create_scheduling_link`

Generate a single-use Calendly booking link for one event type, good for exactly one booking. Use when the user wants to send someone a one-time link to book a specific meeting type, as an alternative to sharing the reusable scheduling_url. Calendly books the meeting itself only when the recipient completes this link; no tool creates a meeting directly.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /scheduling_links`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `event_type` | string | **yes** | Full Calendly event type uri from list_event_types or get_event_type. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.booking_url` | string |  |
| `resource.owner` | string |  |
| `resource.owner_type` | string |  |

Also retrieved by: "make a one-time booking link for that meeting type", "send someone a single-use link to book a call", "generate a fresh scheduling link for the demo", "I need a one-off link for this specific booking template".

### `calendly.list_webhook_subscriptions`

List the webhook subscriptions registered on a Calendly organization or user, with each one's callback url, subscribed events, and state. Use when the user asks what Calendly integrations or notification hooks are set up, or before delete_webhook_subscription.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /webhook_subscriptions`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `count` | integer | no | Results per page, default 20. |
| `organization` | string | **yes** | Full Calendly organization uri the subscriptions belong to. |
| `page_token` | string | no | Token from a previous page's pagination.next_page_token. |
| `scope` | string, one of organization, user | **yes** | List org-wide subscriptions or only the connected user's own. |
| `user` | string | no | Full Calendly user uri, required when scope is "user". |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].callback_url` | string |  |
| `collection[].events` | array of string |  |
| `collection[].scope` | string |  |
| `collection[].state` | string |  |
| `collection[].uri` | string |  |
| `pagination` | object |  |
| `pagination.next_page_token` | string |  |

Also retrieved by: "what calendly hooks do we have set up", "show me every webhook connected to calendly", "what integrations are listening for booking events".

### `calendly.create_webhook_subscription`

Register a new Calendly webhook subscription: a callback url that Calendly posts to when chosen events fire (invitee.created, invitee.canceled, routing_form_submission.created). Use when the user wants to hook up, connect, or subscribe an endpoint to Calendly booking or cancellation events.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /webhook_subscriptions`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `events` | array of string | **yes** | Which event types to subscribe to. |
| `organization` | string | **yes** | Full Calendly organization uri the subscription is scoped to. |
| `scope` | string, one of organization, user | **yes** | Receive events for the whole organization or only one user. |
| `signing_key` | string | no | Optional secret Calendly signs each delivery with. |
| `url` | string | **yes** | HTTPS endpoint Calendly should post events to. |
| `user` | string | no | Full Calendly user uri, required when scope is "user". |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.callback_url` | string |  |
| `resource.events` | array of string |  |
| `resource.state` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "hook up an endpoint to calendly booking events", "subscribe a url to invitee cancellations", "connect our system to get notified on new bookings", "set up a webhook for calendly cancellations".

### `calendly.get_webhook_subscription`

Get one Calendly webhook subscription's full details by uuid: callback url, subscribed events, and current state. Use after list_webhook_subscriptions or when the user already has a specific subscription's uuid.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /webhook_subscriptions/{{params.webhook_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `webhook_uuid` | string | **yes** | Webhook subscription uuid from list_webhook_subscriptions. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.callback_url` | string |  |
| `resource.events` | array of string |  |
| `resource.state` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what events is that webhook subscribed to", "pull up details on one calendly hook", "check the state of a specific webhook subscription".

### `calendly.delete_webhook_subscription`

Remove a Calendly webhook subscription by uuid, stopping event deliveries to its callback url for good. Use when the user wants to unsubscribe, disconnect, or turn off a Calendly notification hook. Unrecoverable; recreate it with create_webhook_subscription if needed again.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `DELETE /webhook_subscriptions/{{params.webhook_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `webhook_uuid` | string | **yes** | Webhook subscription uuid to remove. |

Also retrieved by: "turn off that calendly webhook", "unsubscribe that endpoint from booking events", "remove a hook we no longer need", "disconnect that integration from calendly".

### `calendly.get_organization`

Get a Calendly organization's own details by uuid: its uri and name. Use before organization-scoped tools like list_organization_memberships or list_routing_forms when the user's organization uri is not already known from get_current_user.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /organizations/{{params.organization_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `organization_uuid` | string | **yes** | Organization uuid, the last path segment of current_organization. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.name` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what's our calendly organization called", "pull up our team's calendly org details", "check the name on our calendly workspace".

### `calendly.list_organization_memberships`

List the people who belong to a Calendly organization, with each person's role and profile. Use when the user asks who is on their Calendly team, wants a headcount, or needs a teammate's membership uuid before removing them.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /organization_memberships`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `count` | integer | no | Results per page, default 20. |
| `email` | string | no | Filter to one member's email. |
| `organization` | string | **yes** | Full Calendly organization uri to list members of. |
| `page_token` | string | no | Token from a previous page's pagination.next_page_token. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].role` | string |  |
| `collection[].uri` | string |  |
| `collection[].user` | object |  |
| `collection[].user.email` | string |  |
| `collection[].user.name` | string |  |
| `collection[].user.uri` | string |  |
| `pagination` | object |  |
| `pagination.next_page_token` | string |  |

Also retrieved by: "who's on our calendly team", "show me everyone with access to our calendly org", "what's our calendly headcount", "list the members of our scheduling team".

### `calendly.get_organization_membership`

Get one Calendly organization membership's full details by uuid: the member's role and profile. Use after list_organization_memberships or when the user already has a specific member's membership uuid, such as before remove_organization_membership.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /organization_memberships/{{params.membership_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `membership_uuid` | string | **yes** | Organization membership uuid from list_organization_memberships. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.role` | string |  |
| `resource.uri` | string |  |
| `resource.user` | object |  |
| `resource.user.email` | string |  |
| `resource.user.name` | string |  |
| `resource.user.uri` | string |  |

Also retrieved by: "what role does that person have on our calendly team", "pull up one teammate's calendly membership", "check a specific member's standing on the team".

### `calendly.remove_organization_membership`

Remove a person from a Calendly organization by membership uuid, revoking their access to the team's shared scheduling. Use when the user wants to offboard, remove, or kick a teammate off the Calendly organization. They keep their own personal Calendly account; only organization membership is revoked.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `DELETE /organization_memberships/{{params.membership_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `membership_uuid` | string | **yes** | Organization membership uuid to remove. |

Also retrieved by: "take someone off our calendly team", "offboard a teammate from calendly", "kick that person out of our calendly org".

### `calendly.invite_organization_member`

Invite someone to join a Calendly organization by email. Use when the user wants to add, invite, or onboard a new teammate onto the shared Calendly team. The invitee must accept before get_organization_invitation shows a completed status.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /organizations/{{params.organization_uuid}}/invitations`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `email` | string | **yes** | Invitee's email address. |
| `organization_uuid` | string | **yes** | Organization uuid to invite the person into. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.email` | string |  |
| `resource.last_sent_at` | string |  |
| `resource.status` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "invite a new teammate to our calendly org", "add someone to the shared calendly team", "send an invite to join our calendly workspace".

### `calendly.list_organization_invitations`

List pending, accepted, and declined invitations to a Calendly organization. Use when the user asks who has been invited to their Calendly team but hasn't joined yet, or wants an invitation's uuid before revoke_organization_invitation.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /organizations/{{params.organization_uuid}}/invitations`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `count` | integer | no | Results per page, default 20. |
| `email` | string | no | Filter to one invitee's email. |
| `organization_uuid` | string | **yes** | Organization uuid whose invitations to list. |
| `page_token` | string | no | Token from a previous page's pagination.next_page_token. |
| `status` | string, one of pending, accepted, declined | no | Filter by invitation status. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].email` | string |  |
| `collection[].last_sent_at` | string |  |
| `collection[].status` | string |  |
| `collection[].uri` | string |  |
| `pagination` | object |  |
| `pagination.next_page_token` | string |  |

Also retrieved by: "who's been invited but hasn't joined calendly yet", "show pending invites to our calendly team", "what invitations are still outstanding".

### `calendly.get_organization_invitation`

Get one Calendly organization invitation's status by uuid: pending, accepted, or declined, and when it was last sent. Use after list_organization_invitations or when the user asks whether a specific invite has been accepted yet.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /organizations/{{params.organization_uuid}}/invitations/{{params.invitation_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `invitation_uuid` | string | **yes** | Invitation uuid from list_organization_invitations. |
| `organization_uuid` | string | **yes** | Organization the invitation belongs to. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.email` | string |  |
| `resource.last_sent_at` | string |  |
| `resource.status` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "has that person accepted their calendly invite yet", "check the status of one pending invitation", "see whether that specific invite was accepted or declined".

### `calendly.revoke_organization_invitation`

Cancel a pending Calendly organization invitation by uuid before the invitee accepts it. Use when the user wants to withdraw, cancel, or take back an invite they sent to join their Calendly team. Unrecoverable; send invite_organization_member again if the user changes their mind.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `DELETE /organizations/{{params.organization_uuid}}/invitations/{{params.invitation_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `invitation_uuid` | string | **yes** | Invitation uuid to revoke. |
| `organization_uuid` | string | **yes** | Organization the invitation belongs to. |

Also retrieved by: "cancel that pending calendly invite", "take back an invitation before they join", "withdraw an invite we sent by mistake".

### `calendly.list_user_availability_schedules`

List a Calendly user's availability schedules: the named weekly windows (e.g. "Working Hours") that decide when their event types can be booked. Use when the user asks what hours they're bookable, or wants a schedule's uuid before get_user_availability_schedule.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /user_availability_schedules`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `user` | string | **yes** | Full Calendly user uri whose availability schedules to list. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].default` | boolean |  |
| `collection[].name` | string |  |
| `collection[].timezone` | string |  |
| `collection[].uri` | string |  |

Also retrieved by: "what hours am I bookable", "show me my calendly working hours setup", "what schedules control when people can book me".

### `calendly.get_user_availability_schedule`

Get one Calendly availability schedule's full weekly rules by uuid: which days and hours it makes someone bookable, in their own time zone. Use after list_user_availability_schedules or when the user asks exactly what hours a named schedule covers.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /user_availability_schedules/{{params.schedule_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `schedule_uuid` | string | **yes** | Availability schedule uuid from list_user_availability_schedules. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.name` | string |  |
| `resource.rules` | array of object |  |
| `resource.rules[].intervals` | array of object |  |
| `resource.rules[].type` | string |  |
| `resource.rules[].wday` | string |  |
| `resource.timezone` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what days does that schedule cover", "pull up the details of my working hours setup", "what time zone is that availability schedule in".

### `calendly.list_user_busy_times`

List the blocks of time a Calendly user is already busy in a window (at most 7 days), from booked Calendly events and connected external calendars alike. Use when the user asks when someone is free or busy. For a meeting type's actual open booking slots instead of raw busy blocks use list_event_type_available_times.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /user_busy_times`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `end_time` | string | **yes** | Window end, ISO 8601. Calendly limits this window to 7 days from start_time. |
| `start_time` | string | **yes** | Window start, ISO 8601, e.g. "2026-08-01T00:00:00Z". |
| `user` | string | **yes** | Full Calendly user uri whose busy times to list. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].end_time` | string |  |
| `collection[].event` | string |  |
| `collection[].start_time` | string |  |
| `collection[].type` | string |  |

Also retrieved by: "when is sam already busy this week", "show me the blocked time on someone's calendar", "what times is that person unavailable".

### `calendly.list_routing_forms`

List a Calendly organization's routing forms: the qualifying questionnaires that route a visitor to the right event type or person before they book. Use when the user asks what intake forms or booking questionnaires exist, or wants a form's uuid before list_routing_form_submissions.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /routing_forms`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `count` | integer | no | Results per page, default 20. |
| `organization` | string | **yes** | Full Calendly organization uri to list routing forms for. |
| `page_token` | string | no | Token from a previous page's pagination.next_page_token. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].name` | string |  |
| `collection[].status` | string |  |
| `collection[].uri` | string |  |
| `pagination` | object |  |
| `pagination.next_page_token` | string |  |

Also retrieved by: "what intake forms do we have set up", "show me our booking questionnaires", "what routing forms exist for qualifying leads".

### `calendly.get_routing_form`

Get one Calendly routing form's structure by uuid: its questions and routing status. Use after list_routing_forms or when the user asks what a specific intake form actually asks, or wants its uri before list_routing_form_submissions.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /routing_forms/{{params.routing_form_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `routing_form_uuid` | string | **yes** | Routing form uuid from list_routing_forms. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.name` | string |  |
| `resource.questions` | array of object |  |
| `resource.questions[].label` | string |  |
| `resource.questions[].required` | boolean |  |
| `resource.questions[].type` | string |  |
| `resource.questions[].uri` | string |  |
| `resource.status` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what questions does that intake form ask", "pull up the structure of our qualifying questionnaire", "show me exactly what that intake questionnaire is made of".

### `calendly.list_routing_form_submissions`

List the responses people have submitted to a Calendly routing form, with each submission's answers and where it routed the visitor. Use when the user asks what came in through an intake form, or wants a specific submission's answers.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /routing_form_submissions`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `count` | integer | no | Results per page, default 20. |
| `form` | string | **yes** | Full Calendly routing form uri from get_routing_form. |
| `page_token` | string | no | Token from a previous page's pagination.next_page_token. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `collection` | array of object |  |
| `collection[].questions_and_answers` | array of object |  |
| `collection[].questions_and_answers[].answer` | string |  |
| `collection[].questions_and_answers[].question` | string |  |
| `collection[].result` | object |  |
| `collection[].result.type` | string |  |
| `collection[].result.value` | string |  |
| `collection[].submitted_at` | string |  |
| `collection[].uri` | string |  |
| `pagination` | object |  |
| `pagination.next_page_token` | string |  |

Also retrieved by: "what came in through our intake form", "show me the responses to that routing form", "who filled out the qualifying questionnaire".

### `calendly.get_routing_form_submission`

Get one Calendly routing form submission's full answers and outcome by uuid. Use after list_routing_form_submissions or when the user already has a specific submission's uuid and wants its answers or where it routed the visitor.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /routing_form_submissions/{{params.submission_uuid}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `submission_uuid` | string | **yes** | Routing form submission uuid from list_routing_form_submissions. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `resource` | object |  |
| `resource.questions_and_answers` | array of object |  |
| `resource.questions_and_answers[].answer` | string |  |
| `resource.questions_and_answers[].question` | string |  |
| `resource.result` | object |  |
| `resource.result.type` | string |  |
| `resource.result.value` | string |  |
| `resource.submitted_at` | string |  |
| `resource.uri` | string |  |

Also retrieved by: "what did that person answer on the intake form", "pull up one specific form submission", "where did that particular response end up getting routed".

### `calendly.delete_invitee_data`

Permanently erase every Calendly invitee record tied to one or more email addresses, across every past and future booking. Use only for a GDPR-style right-to-be-forgotten data deletion request, never to simply cancel someone's meeting; for that use cancel_scheduled_event. Unrecoverable and irreversible.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `POST /data_compliance/deletion/invitees`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `emails` | array of string | **yes** | Email addresses whose invitee data to erase permanently. |

Also retrieved by: "permanently wipe someone's calendly data for a privacy request", "erase all booking records tied to that email for good", "handle a right-to-be-forgotten request for calendly".
