Can an AI agent use zcal?
As of 6 Oct 2026, an AI agent can't use zcal on its own: Cloudflare Turnstile on the sign-up form.
- Find: Some docs for agents: llms.txt.
- Access: Can't sign up.
- Use: Work not reached.
- Pay: Payment not reached.
- Leave: Leaving not reached.
No API, CLI or MCP to drive it with
What the levels meanDriven 6 Oct 20261 drive so farRules 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 serverTurned away when they send the sign-up form.
- Signed agentsThe sign-up page opens. The check on the form still applies.
- Agents in a person's browserNot measured yet.
Sign-up page checked 13 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from
What an agent can do in zcal.
In the web editor
zcal has no API, CLI or MCP server, so it's L0. Our agent did these in the web editor, as a person would.
- Read the full help docs as Markdown (llms.txt, .md URLs, Accept: text/markdown) without an account
What it can't, and why
- Create an accountVisible Cloudflare Turnstile on the sign-up form rejected our agent's browser
- Create, book, reschedule or cancel invites, polls or group invitesNeeds an account; and zcal has no API, CLI or MCP server, only the web app
- Get API credentialszcal offers no public API
Can an AI agent sign up for zcal on its own?
No. Sign-up: needs a human. No headless route: sign-up is web only (Google, Microsoft or email form). The email form at zcal.co/signup/local has a visible Cloudflare Turnstile 'Verify you are human'; our agent's browser got 'We could not verify your browser'.
Does zcal have an MCP server, and can an agent connect to it?
No. The drive found no MCP server for zcal.
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).
What the drive found
–API–OpenAPI–MCP–CLI–SDKllms.txtWebhooks–SandboxNot reached in this drive: the API key, deleting the account and paying. Every checkpoint, in detail
For the team behind zcal.
Where agents stop in zcal today, and the fixes that get them further, highest impact first.
The fixes, highest impact first
- Let verified signed agents past TurnstileStep-by-step guide
- Publish an API for invites and bookings
- Offer an API key or OAuth for agents
1 more fix
- Ship an MCP server for scheduling
- 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 zcal, 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 · paid plans
Part scores
Agent-ready setup
- llms.txt: found
- OpenAPI: not found
- MCP server: not found
- CLI: not found
Not measured in this drive: Holds up, Docs match (part of an Audit).
Needs a paid plan
Not counted in the level.
| Capability | Plan |
|---|---|
| Create a team and collective/round-robin scheduling | Pro |
For agents and builders.
The drive as data, every checkpoint and all 17 attempts.
How an agent connects · 4 tips
/api/tools/zcal.json/tools/zcal.mdMCP get_tool {"slug":"zcal"}
- There is no zcal API: everything happens in the web app at zcal.co.
- Docs: fetch https://help.zcal.co/llms.txt and append .md to any help page.
- Sign-up has a Cloudflare Turnstile; plan for a human to create the account.
- Booking events reach you only as outbound webhooks or via Zapier, configured in the web UI.
Every checkpoint, in detail · 9 checkpoints
- DocsHeadlesshelp.zcal.co (GitBook) serves llms.txt (text/markdown), .md page URLs, and text/markdown on Accept negotiation. zcal.co/llms.txt is an SPA soft-404.
- Sign upNeeds a humanNo headless route: sign-up is web only (Google, Microsoft or email form). The email form at zcal.co/signup/local has a visible Cloudflare Turnstile 'Verify you are human'; our agent's browser got 'We could not verify your browser'.
- VerifyNot reachedNot reached: no account was created, so no verification mail was expected.
- KeyNot reachedzcal has no public API, API key, OAuth app, CLI, SDK or MCP server in its docs; only outbound webhooks and Zapier, set up in the web app after sign-up.
- First callNot reachedNo API to call; the web app needs an account, which sits behind Turnstile.
- First actionNot reachedNo account, so no invite link could be created.
- PayNot reachedNo 402, no x402/MPP/UCP, not in mpp.dev or the x402 Bazaar. Pricing page: 14-day free trial of Pro and Business; billing via zcal.co/account > Manage Billing (Stripe portal). Whether the trial needs a card is unknown. Buying needs an account, and the account needs a human past Turnstile.
- CancelNot reachedDocs (pricing/payments-and-billing.md): cancel in the Stripe portal via zcal.co/account > Manage Billing > Cancel Plan, web UI only. Not exercised: no plan started.
- DeleteNot reachedThe web app has a 'Delete account' action (string in the app bundle), web UI only; no API. Not exercised: no account existed. Nothing was created, so nothing to clean up.
The attempt log · 17 attempts
| Capability | Route | Result | Evidence |
|---|---|---|---|
| llms.txt: Fetch llms.txt on zcal.co and help.zcal.co | api | done ✓ | https://help.zcal.co/llms.txt 200 text/markdown (GitBook index, 60+ pages). https://zcal.co/llms.txt 200 text/html 38680 B = SPA soft-404. |
| markdown docs: Accept: text/markdown and .md URL on help.zcal.co | api | done ✓ | GET help.zcal.co/getting-started with Accept: text/markdown -> content-type text/markdown, vary includes Accept; .md URLs also served (getting-started.md). |
| mcp: Probe zcal.co/mcp with server/discover (2026-07-28) | mcp | failed ✓ | POST https://zcal.co/mcp -> HTTP 404 text/html. GET /mcp -> SPA HTML. No MCP server found; none in docs. |
| cards/well-known: ai-catalog, agent-card, agent.json, oauth-protected-resource, oauth-authorization-server, ucp, auth.md, SKILL.md, openapi.json | api | failed ✓ | All return 200 text/html 38680 B (SPA soft-404); no JSON. api.zcal.co, x402./mpp./agents.zcal.co do not resolve (curl 000). |
| aipref: robots.txt and headers | api | done ✓ | robots.txt: 'User-Agent: * / Disallow: /*?via=* / Disallow: /cdn-cgi/' + Sitemap; no Content-Usage or Content-signal line; no Content-Usage header on /. |
| pay step probe: Look for 402 rails, registries, billing API | api | done ✓ | No 402 on any path; zcal not in mpp.dev/api/services nor CDP x402 Bazaar; help pricing/payments-and-billing.md: billing via zcal.co/account > Manage Billing > Stripe portal; pricing page mentions free trial of Pro and Business. |
| Sign up: Sign up with email at zcal.co/signup/local | browser | blocked ✓ | No headless sign-up route documented (help getting-started.md: Google/Microsoft login or email address, web only). Browser form at /signup/local shows a visible Cloudflare Turnstile 'Verify you are human' widget (CHECK_TURNSTILE_ON:!0 in main chunk); submitting gave toast 'We could not verify your browser. Please refresh the page and try again.' Screenshot browser/shots/003.png. |
| Sign up: Human handoff (own browser) for the Turnstile on sign-up | browser | blocked | (Cloudflare Turnstile). |
| API credentials: Find an API key / OAuth / MCP route in docs | none | blocked ✓ | help.zcal.co/llms.txt lists 60+ pages: no API, no API key, no OAuth app, no CLI, no SDK, no MCP. Only outbound webhooks (integrations/webhooks.md) and Zapier, both configured in the web app after sign-up. |
| Create an invite link (one-on-one): Attempt create an invite link (one-on-one) | none | blocked | No API/MCP/CLI exists for this; docs (https://help.zcal.co/getting-started.md) describe a web UI route only. |
| Invitee books a time slot on an invite: Attempt invitee books a time slot on an invite | none | blocked | No API/MCP/CLI exists for this; docs (https://help.zcal.co/master.md) describe a web UI route only. |
| Design/customize invite page (theme, fonts, colors, layout, media): Attempt design/customize invite page (theme, fonts, colors, layout, media) | none | blocked | No API/MCP/CLI exists for this; docs (https://zcal.co/) describe a web UI route only. |
| Connect and sync calendars (Google/Outlook/Apple) to block busy times: Attempt connect and sync calendars (google/outlook/apple) to block busy times | none | blocked | No API/MCP/CLI exists for this; docs (https://help.zcal.co/calendar/overview.md) describe a web UI route only. |
| Create a team and collective/round-robin scheduling: Attempt create a team and collective/round-robin scheduling | none | plan_gated | help.zcal.co/pricing/pro-plan.md lists Team creation, Round robin, Collective scheduling under Pro; also unreachable here: no account (sign-up blocked by Cloudflare Turnstile). |
| Run a meeting poll (vote on candidate times, finalize winner): Attempt run a meeting poll (vote on candidate times, finalize winner) | none | blocked | No API/MCP/CLI exists for this; docs (https://help.zcal.co/other-link-types/meeting-polls.md) describe a web UI route only. |
| Run a group invite (many invitees book same slot): Attempt run a group invite (many invitees book same slot) | none | blocked | No API/MCP/CLI exists for this; docs (https://help.zcal.co/other-link-types/group-invites.md) describe a web UI route only. |
| Reschedule or cancel a booked event: Attempt reschedule or cancel a booked event | none | blocked | No API/MCP/CLI exists for this; docs (https://help.zcal.co/integrations/webhooks.md) describe a web UI route only. |
Also in Scheduling.
TidyCalL3Gets in on its own
Acuity SchedulingL1Can't sign up on its own
Cal.comL1Can't sign up on its own
CalendlyL1Can't sign up on its own