> ## Documentation Index
> Fetch the complete documentation index at: https://docs.guild.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> To act on a user's behalf in Guild, use the Guild REST API at https://api.guild.ai/v1.
> The OpenAPI spec is unauthenticated: https://docs.guild.ai/openapi.json (or openapi.yaml).
> Authenticate with an account API key, sent as HTTP Basic (key id as username, secret as password) or as `Authorization: Bearer <api_key_id>:<api_key_secret>`. See https://docs.guild.ai/api-reference/introduction#authentication.
> To run one agent on demand without account-wide access, use an API trigger instead: https://docs.guild.ai/platform/api-triggers.
> To act on Guild from an MCP client, connect to https://api.guild.ai/mcp (OAuth) or run `guild mcp` locally. Setup: https://docs.guild.ai/api-reference/mcp.
> To search these docs from an MCP client, connect to https://docs.guild.ai/mcp. The full page index is https://docs.guild.ai/llms.txt.

# Book, cancel, and track Calendly events from Guild agents

> Connect Guild agents to Calendly to book and cancel events, track invitees, manage availability, routing forms, contacts, and webhook subscriptions.

Integrations · Calendly

A Guild agent books, cancels, and tracks Calendly events on your team's behalf. Guild stores your Calendly personal access token server-side so agent code never sees it, enforces credential policies before any request leaves the platform, and logs every action for audit.

> [card] [Book a demo](https://guild-ai.cal.com/gtm/meeting-with-guild.ai)
>
> See how teams govern agents that use Calendly.

> [card] [Talk to sales](https://guild.ai/talk-to-sales)
>
> Get access to Guild, then connect Calendly to your first agent.

## What the Calendly integration exposes

The tools cover event types, availability schedules, and scheduled events, including booking, cancellation, and invitee tracking. Additional tools reach contacts, routing forms, scheduling links, shares, webhook subscriptions, organisation membership, teams, meeting recaps, activity logs, and data compliance endpoints. Tools are named with the `calendly_` prefix and imported from `guildai~calendly`.

## How it works

**1. Connect your Calendly credential**

In Guild, go to **Access & setup > Credentials**, click **Connect**, select **calendly**, and paste your personal access token into **API Key**. See [Credentials](https://docs.guild.ai/platform/credentials.md) for workspace, member, and agent-scoped options.

**2. Import and wire the tools**

Import `CalendlyTools` from `@guildai-services/guildai~calendly` and spread it into your `llmAgent` tools object. Guild sends the token as a bearer token in the `Authorization` header on every outbound request.

**3. Select only needed tools**

Use [`pick()`](https://docs.guild.ai/sdk/tools#selecting-specific-tools) to include only the `calendly_` tools your agent needs. Narrowing the tool set also makes credential policies easier to write and audit.

## Why Calendly access needs governing

Calendly credentials can book and cancel events, remove invitee data, manage organisation membership, and create webhook subscriptions. Guild's credential proxy checks [credential policies](https://docs.guild.ai/platform/credential-policies.md) before any request reaches Calendly, so you can write ALLOW and DENY rules that limit an agent to specific operations, such as read-only availability checks or booking alone, without issuing a separate token.

Credentials are stored and injected server-side; agent code, prompts, and containers never see the token. You can scope a credential to one workspace, one member, or one agent using [Credentials](https://docs.guild.ai/platform/credentials.md), and the activity log tool surfaces a full record of actions taken. Agents that need broader access get it explicitly; everything else is denied by default once you remove the auto-created allow-all policy.

## About the Calendly integration

Agents can read and manage Calendly event types, availability schedules, and scheduled events, including booking, cancelling, and tracking invitees. They can also manage contacts, routing forms, scheduling links, and webhook subscriptions. Organisation membership, teams, meeting recaps, and activity logs are also accessible. The integration is `guildai~calendly`.

## Authentication

* **Type:** API key
* **Header:** Guild sends the key as a bearer token in the `Authorization` header

### Setup

**1. Connect Calendly**

In Guild, go to **Access & setup > Credentials**, click **Connect**, select **calendly**, and paste the key into **API Key**.

See [Credentials](https://docs.guild.ai/platform/credentials.md) for workspace, member, and agent-scoped credentials.

## Usage

```typescript theme={null}
import { CalendlyTools } from "@guildai-services/guildai~calendly"
import { llmAgent } from "@guildai/agents-sdk"

export default llmAgent({
  systemPrompt: "You work with Calendly.",
  tools: { ...CalendlyTools },
})
```

### Selecting specific tools

Tools are named with the `calendly_` prefix. Use [`pick()`](https://docs.guild.ai/sdk/tools#selecting-specific-tools) to include only what your agent needs.

## Tools

Tools in the latest published version of `guildai~calendly`:

> [accordion] All 68 tools
>
> | Tool | What it does |
> | - | - |
> | `calendly_activity_log_list_activity_log_entries` | Returns a list of activity log entries |
> | `calendly_availability_get_event_type_availability` | Return the availability for an event type |
> | `calendly_availability_get_user_availability_schedule` | This will return the availability schedule of the given UUID. |
> | `calendly_availability_list_user_availability_schedules` | Returns the availability schedules of the given user. |
> | `calendly_availability_list_user_busy_times` | Returns an ascending list of user internal and external scheduled events within a specified date range. |
> | `calendly_availability_update_event_type_availability` | Update an event type availability schedule |
> | `calendly_contacts_create_contact` | Create a new Contact |
> | `calendly_contacts_delete_contacts_uuid` | Delete an existing Contact |
> | `calendly_contacts_get_contact` | Returns the details of a specified Contact. |
> | `calendly_contacts_get_contact_custom_field_definition` | Returns a single custom field definition by uuid. |
> | `calendly_contacts_list_contact_custom_field_definitions` | Returns all custom field definitions available to the authenticated user or organization. |
> | `calendly_contacts_list_contacts` | Returns a collection of Contacts. |
> | `calendly_contacts_patch_contacts_uuid` | Update an existing Contact. |
> | `calendly_data_compliance_delete_invitee_data` | To submit a request to remove invitee data from all previously booked events in your organization, use this endpoint. |
> | `calendly_data_compliance_delete_scheduled_event_data` | To submit a request to remove scheduled events data within a time range for your organization, use this endpoint. |
> | `calendly_event_types_create_event_type` | Create a new Event Type |
> | `calendly_event_types_create_one_off_event_type` | Creates One-Off Event Type |
> | `calendly_event_types_get_event_type` | Returns information about a specified Event Type. |
> | `calendly_event_types_list_event_type_available_times` | Returns a list of available times for an event type within a specified date range. |
> | `calendly_event_types_list_event_type_memberships` | Fetch list of event type hosts |
> | `calendly_event_types_list_event_types` | Returns all Event Types associated with a specified User. |
> | `calendly_event_types_update_event_type` | Update an existing Event Type |
> | `calendly_groups_get_group` | Returns information about a specified Group. |
> | `calendly_groups_get_group_relationship` | Returns a group relationship by uuid |
> | `calendly_groups_list_group_relationships` | Returns a list of group relationships - a given owner can have one membership record, but multiple admin records |
> | `calendly_groups_list_groups` | Returns a list of groups. |
> | `calendly_locations_list_user_locations` | Returns configured location information for a given user. |
> | `calendly_notetaker_delete_meeting_recaps_uuid` | Delete an existing Recap |
> | `calendly_notetaker_get_meeting_recaps_uuid_recap` | Returns the recap associated with a meeting if it is available. |
> | `calendly_notetaker_get_transcript_meeting_recaps` | Returns the transcript associated with a meeting recap if it is available. |
> | `calendly_notetaker_list_meeting_recaps` | Returns a paginated list of meeting recaps accessible to the authenticated user. |
> | `calendly_notetaker_update_meeting_recaps_uuid` | Update an existing Recap. |
> | `calendly_organizations_create_organization_invitation` | Invites a user to an organization. |
> | `calendly_organizations_delete_organization_membership` | Removes a user from an organization. |
> | `calendly_organizations_get_organization` | Returns the details of a specified Organization. |
> | `calendly_organizations_get_organization_invitation` | Returns an Organization Invitation that was sent to the organization's members. |
> | `calendly_organizations_get_organization_membership` | Returns information about a user's Organization Membership |
> | `calendly_organizations_get_team` | Returns a single Team. |
> | `calendly_organizations_list_organization_invitations` | Returns a list of Organization Invitations that were sent to the organization's members. |
> | `calendly_organizations_list_organization_memberships` | Use this to list the Organization Memberships for all users belonging to an organization, use. |
> | `calendly_organizations_list_teams` | Returns a paginated list of Teams matching the requested user. |
> | `calendly_organizations_revoke_organization_invitation` | Use this to revoke an Organization Invitation to an organization. |
> | `calendly_outgoing_communications_list_outgoing_communications` | Returns a list of outgoing SMS and email communications. |
> | `calendly_routing_forms_get_routing_form` | Get a specified Routing Form. |
> | `calendly_routing_forms_get_routing_form_submission` | Get a specified Routing Form Submission. |
> | `calendly_routing_forms_list_routing_forms` | Get a list of Routing Forms for a specified Organization. |
> | `calendly_routing_forms_list_routing_form_submissions` | Get a list of Routing Form Submissions for a specified Routing Form. |
> | `calendly_scheduled_events_create_event_invitee` | Creates a new booking for an event invitee. |
> | `calendly_scheduled_events_create_invitee_no_show` | Marks an Invitee as a No Show. |
> | `calendly_scheduled_events_create_scheduled_event_cancellation` | Cancels specified event. |
> | `calendly_scheduled_events_delete_invitee_no_show` | Undoes marking an Invitee as a No Show. |
> | `calendly_scheduled_events_get_event_invitee` | Returns information about a specified Invitee (person invited to an event). |
> | `calendly_scheduled_events_get_invitee_no_show` | Returns information about a specified Invitee No Show. |
> | `calendly_scheduled_events_get_scheduled_event` | Returns information about a specified Event. |
> | `calendly_scheduled_events_list_event_invitees` | Returns a list of Invitees for an event. |
> | `calendly_scheduled_events_list_scheduled_events` | Returns a list of Events. |
> | `calendly_scheduling_links_create_scheduling_link` | Creates a single-use scheduling link. |
> | `calendly_shares_create_share` | Endpoint for our Customize Once and Share feature. |
> | `calendly_shares_delete_share` | Deletes a single-use scheduling link (share). |
> | `calendly_shares_list_shares` | Returns the user's Shares, newest first. |
> | `calendly_shares_update_share` | Update a specified Share. |
> | `calendly_users_get_current_user` | Returns basic information about your user account. |
> | `calendly_users_get_user` | Returns information about a specified User. |
> | `calendly_webhooks_create_webhook_subscription` | Create a Webhook Subscription for an Organization, User, or Group. |
> | `calendly_webhooks_delete_webhook_subscription` | Delete a Webhook Subscription. |
> | `calendly_webhooks_get_sample_webhook_data` | Test your webhook subscription |
> | `calendly_webhooks_get_webhook_subscription` | Get a specified Webhook Subscription. |
> | `calendly_webhooks_list_webhook_subscriptions` | Get a list of Webhook Subscriptions for a specified Organization, User, or Group. |

## Frequently asked questions

> [accordion] Can an agent receive Calendly webhook events directly?
>
> Not yet. The catalog entry for `guildai~calendly` lists no webhook events, so Guild cannot trigger an agent run when a Calendly event fires. The integration does include tools to create and manage webhook subscriptions on the Calendly side.

> [accordion] How do I stop an agent from cancelling events it should only read?
>
> Write a credential policy with a DENY rule targeting `calendly_scheduled_events_create_scheduled_event_cancellation` and similar mutating operations. Guild's proxy enforces the rule before the request reaches Calendly. See [Credential policies](https://docs.guild.ai/platform/credential-policies.md) for DENY and ALLOW syntax.

> [accordion] Can I give one agent its own Calendly token instead of sharing the organisation credential?
>
> Yes. From the installed agent's page, connect a dedicated credential for `calendly`. That token serves only that agent and never applies to other agents or workspaces. See [Credentials](https://docs.guild.ai/platform/credentials.md) for the dedicated credential option.

> [accordion] Can an agent delete invitee data for compliance requests?
>
> Yes. The tools `calendly_data_compliance_delete_invitee_data` and `calendly_data_compliance_delete_scheduled_event_data` submit removal requests for invitee data and scheduled event data respectively. Restrict access to these tools with a credential policy if only specific agents should use them.

## Put a governed agent on Calendly this week

> [card] [Book a demo](https://guild-ai.cal.com/gtm/meeting-with-guild.ai)
>
> See how teams govern agents that use Calendly.

> [card] [Talk to sales](https://guild.ai/talk-to-sales)
>
> Get access to Guild, then connect Calendly to your first agent.

## Related

**Also runs on Guild:** [Coda](https://docs.guild.ai/integrations/coda-openapi.md) · [Confluence](https://docs.guild.ai/integrations/confluence.md) · [Fathom](https://docs.guild.ai/integrations/fathom.md) · [Fireflies](https://docs.guild.ai/integrations/fireflies.md)

**Read:** Docs: [Credential policies](https://docs.guild.ai/platform/credential-policies.md) · [Credentials](https://docs.guild.ai/platform/credentials.md) · [Tools in agents](https://docs.guild.ai/sdk/tools.md)
