Can an AI agent use Calendly?
As of 6 Oct 2026, an AI agent can't use Calendly on its own: reCAPTCHA on the sign-up form.
- Find: Docs for agents: llms.txt, an OpenAPI and an MCP server.
- Access: Can't sign up.
- Use: Work not reached.
- Pay: Payment not reached.
- Leave: Leaving not reached.
To reach L2 · Gets in: let an agent sign up on its own.
With an account set up by a person: not measured yet.
What the levels meanDriven 6 Oct 2026Same level in 3 drives in a rowRules of 15 Oct 2026Claim this page
Written and checked by our agents from this drive's record. How we write.
Who gets in
- Agents on a serverStopped by a CAPTCHA on the sign-up form.
- Signed agentsThe sign-up page opens. The CAPTCHA on the form stops them too.
- Agents in a person's browserNot measured yet.
Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from
What an agent can do in Calendly.
On its own
- Read all of Calendly's developer documentation, including setup guides for its API and its AI-agent connector, without needing an account.
What it can't, and why
- Create a Calendly accountA human verification checkbox appears after the sign-up form.
- Get an API key or connect the AI-agent toolEvery way to get credentials requires a logged-in account first.
- Book, manage, or cancel meetings; set availability; collect paymentAll of these require an account, which could not be created.
Can an AI agent sign up for Calendly on its own?
No. Sign-up: needs a human. Web form only (email, name, 12+ character password, terms). Submitting it shows a visible reCAPTCHA v2 'I'm not a robot' checkbox.
Does Calendly have an MCP server, and can an agent connect to it?
Yes. Calendly has an official MCP server.
A new agent can't get in on its own: in the drive of 6 Oct 2026, our agent stopped at sign up (it needs a person). Through the MCP server, 0 of our agent's 11 attempts worked.
What the drive found
APIOpenAPIMCP · official–CLI–SDKllms.txtWebhooks–SandboxNot reached in this drive: the API key, deleting the account and paying. Every checkpoint, in detail
For the team behind Calendly.
Where agents stop in Calendly today, and the fixes that get them further, highest impact first.
The fixes, highest impact first
- Let verified agents sign up without reCAPTCHAStep-by-step guide
- Offer a headless token path for new accountsStep-by-step guide
- Support MCP (the 28 Jul 2026 spec) server/discover
1 more fix
- Add a billing API or agent payment rail Step-by-step guide
- Claim it free and reply next to the result.
- A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
- Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
Details
Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.
Already claimed it? Open it in your dashboard.
Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.
Embed the badge on your site
Behind the level.
Our agent couldn't get into Calendly, so the work, its reliability and the crash test aren't measured. The part scores are what it could judge from the outside.
Part scores · level history
Part scores
Agent-ready setup
- llms.txt: found
- OpenAPI: found
- MCP server: found
- CLI: not found
Not measured in this drive: Holds up, Docs match (part of an Audit).
Level history
- 1 Oct 20262 drivesL1Needs a person
- 6 Oct 2026L1Needs a person
For agents and builders.
The drive as data, every checkpoint and all 30 attempts.
How an agent connects · 3 tips
/api/tools/calendly.json/tools/calendly.mdMCP get_tool {"slug":"calendly"}
- Use the MCP server at https://mcp.calendly.com once a human has an account: OAuth with DCR needs an https redirect URI (http loopback is refused).
- Docs: append .md to any developer.calendly.com page; OpenAPI YAML at /openapi/calendly-api.yaml (the .json URL serves HTML).
- Booking through the API (POST /invitees) needs a Standard plan or above; free accounts get the booking page only.
Every checkpoint, in detail · 9 checkpoints
- DocsHeadlessdeveloper.calendly.com/llms.txt, Markdown pages (.md and Accept: text/markdown), OpenAPI 3.1.0 YAML with 65 operations, api-catalog linkset, and a docs-search MCP server, all fetched headless.
- Sign upNeeds a humanWeb form only (email, name, 12+ character password, terms). Submitting it shows a visible reCAPTCHA v2 'I'm not a robot' checkbox.
- VerifyNot reachedNot reached: the sign-up stopped at the reCAPTCHA before any verification mail was due.
- KeyNot reachedPersonal access tokens are made in the web app after login; OAuth and the MCP server use DCR plus a browser consent page for a signed-in user. No device flow, no CIMD, no agent registration. All need an account.
- First callNot reachedNo credentials: api.calendly.com and mcp.calendly.com answer 401.
- First actionNot reachedNo credentials.
- PayNot reachedNo 402 anywhere, no x402/MPP/UCP, no Bazaar or mpp.dev listing, no billing API. The pricing FAQ says upgrades happen on the billing page in the account; the checkout itself was not seen because creating the account needs a human (reCAPTCHA). Free plan plus a 14-day Teams trial without a card.
- CancelNot reachedNo plan was started. Help centre: cancel by switching to Free on the billing page (web UI); no billing API.
- DeleteNot reachedNo account was created. The API has no account delete operation; only Enterprise data-compliance deletion of invitee and event data.
The attempt log · 30 attempts
| Capability | Route | Result | Evidence |
|---|---|---|---|
| llms.txt: Fetch llms.txt | api | done ✓ | https://calendly.com/llms.txt 200 text/plain 11913B; https://developer.calendly.com/llms.txt 200 16651B, lists MCP server, .md pages, OpenAPI 3.1 |
| OpenAPI: Fetch OpenAPI | api | done ✓ | https://developer.calendly.com/openapi/calendly-api.yaml 200 application/x-yaml, openapi: 3.1.0, 65 operationIds; /.well-known/api-catalog linkset 200; /openapi.json returns HTML (200 text/html), not JSON; no x-payment-info |
| MCP discover: POST server/discover to https://mcp.calendly.com/ | mcp | blocked ✓ | 401 WWW-Authenticate Bearer resource_metadata=https://mcp.calendly.com/.well-known/oauth-protected-resource; response also sets mcp-session-id header; PRM 200 application/json |
| Cards: ai-catalog, agent-card, agent.json, mcp server-card | api | failed ✓ | calendly.com/.well-known/ai-catalog.json 404 JSON; agent-card.json 404; agent.json 404; .well-known/mcp/server-card.json 404; https://mcp.calendly.com/server-card 404 text/plain |
| robots/aipref: robots.txt Content-Usage | api | done ✓ | robots.txt 200: no Content-Usage or Content-signal lines; User-Agent * Disallow /*?* and /app/; no Content-Usage response header on / |
| OAuth AS metadata: AS metadata | api | done ✓ | calendly.com/.well-known/oauth-authorization-server: registration_endpoint https://calendly.com/oauth/register, token_endpoint_auth_methods none, S256; no client_id_metadata_document_supported, no device_authorization_endpoint, no agent_auth |
| docs MCP: server/discover on https://developer.calendly.com/_mcp/server, then initialize | mcp | done ✓ | server/discover: HTTP 400 JSON-RPC -32000 'Unsupported protocol version: 2026-07-28 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)'; initialize answered protocolVersion 2025-11-25, serverInfo fern-docs-mcp-server 1.0.0; tools/list: searchDocs only |
| Markdown docs: Accept: text/markdown and .md URL | api | done ✓ | Accept: text/markdown on /docs/getting-started/introduction -> content-type text/markdown, vary: accept-encoding, Cookie (no Vary: Accept); .md URL 200 text/markdown |
| Docs: Find developer docs | api | done ✓ | developer.calendly.com/llms.txt 200, OpenAPI 3.1.0 yaml 200, .md pages 200 text/markdown, docs MCP (fern) searchDocs |
| Sign up: Create a free account with our test email | browser | blocked | calendly.com/signup (no CAPTCHA on first step) -> /app/signup?email=… form (email, full name 'AgentDrives Test', 12+ char password, terms checkbox) -> Continue -> 'Please confirm you’re human to continue.' with a visible reCAPTCHA v2 'I'm not a robot' checkbox (screenshot browser/shots/003.png). No signup API documented; Google/Microsoft OAuth sign-in needs accounts we do not have. |
| Create an event type (meeting template): Try via mcp: event_types-create_event_type | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Share a booking link and let an invitee book a time: Try via mcp: meetings-create_invitee | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Connect a calendar so availability reflects busy times: Try via mcp: availability-list_user_busy_times | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Set availability (hours, buffers, daily limits, schedules): Try via mcp: availability-update_event_type_availability_schedule | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Reschedule or cancel a scheduled meeting: Try via mcp: meetings-cancel_event | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Run group, round-robin, or multi-host (collective) meeting types: Try via mcp: event_types-list_event_types | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Embed the booking page on a website (inline/popup/button): Try via browser: Embed code snippet in event type settings | browser | blocked | Feature lives in the web app, which needs an account |
| Qualify and route inbound leads with a routing form: Try via mcp: routing_forms-list_routing_forms | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Collect payment at time of booking: Try via browser: Event type > Payments (Stripe/PayPal) | browser | blocked | Feature lives in the web app, which needs an account |
| Delegate scheduling to Callie, an AI assistant that negotiates times over email: Try via browser: Callie (beta) assistant in account settings | browser | blocked | Feature lives in the web app, which needs an account |
| Create, view, update, and delete a contact: Try via api: POST /contacts; GET /contacts/{uuid}; PATCH /contacts/{uuid}; DELETE /contacts/{uuid} | api | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Subscribe to scheduling events via webhooks: Try via api: POST /webhook_subscriptions; GET /webhook_subscriptions; DELETE /webhook_subscriptions/{uuid} | api | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Generate a single-use or custom scheduling link for sharing outside the booking page: Try via mcp: scheduling_links-create_single_use_scheduling_link | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| List and inspect scheduled events and their invitees: Try via mcp: meetings-list_events | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Mark/unmark an invitee as a no-show: Try via mcp: meetings-create_invitee_no_show | mcp | blocked | https://api.calendly.com/* -> 401 {"title":"Unauthenticated","message":"The access token is invalid"}; https://mcp.calendly.com/ -> 401 Bearer resource_metadata |
| Verify email: Verify the sign-up email | none | blocked | Sign-up never submitted past the reCAPTCHA, so no verification mail was due |
| API credentials: Get a personal access token or OAuth/MCP token | none | blocked | Docs: PATs are created in the web app (calendly.com/integrations > API & Webhooks tile > Get a token now, after logging in); OAuth/MCP use DCR (https://calendly.com/oauth/register, live, answered 400 invalid_client_metadata 'redirect_uri must start with https in Production' to an http loopback URI) plus a browser consent page for a signed-in user. AS metadata has no device_authorization_endpoint and no CIMD flag. |
| Pay step: Find an agent purchase path | api | blocked | No 402 on api.calendly.com (401 JSON on /, /invitees, /scheduling/invitees); x402./mpp./agents.calendly.com do not resolve (curl 000); no calendly entries in x402 Bazaar or mpp.dev/api/services; no x-payment-info in OpenAPI; no /.well-known/ucp (404 HTML); no billing endpoints in OpenAPI. Pricing FAQ: upgrade 'from the billing page in your account'; signup page: 'No credit card required', 14-day Teams trial that auto-downgrades to Free. |
| Cancel plan: Cancel a paid plan | none | skipped | No plan started. Help centre: 'How to cancel your Calendly subscription ... by switching to th[e Free plan]' on the billing page (web UI); no billing API in OpenAPI. |
| Delete account: Delete the account | none | blocked | No account was created. OpenAPI (65 operations) has no user/account delete; only Enterprise data_compliance deletion of invitee/event data. |
Also in Scheduling.
TidyCalL3Gets in on its ownCalendly vs TidyCal
Acuity SchedulingL1Can't sign up on its ownCalendly vs Acuity Scheduling
Cal.comL1Can't sign up on its ownCalendly vs Cal.com
SavvyCalL1Can't sign up on its ownCalendly vs SavvyCal