Cal.com
Booking works end to end - list event types, fetch slots, post the booking, get a confirmation. But each endpoint demands its own cal-api-version header, and the wrong one returns 404 'Cannot GET /v2/slots', blaming the endpoint rather than the version - an agent that trusts that error hunts for a URL that was there all along. Past that it's clean: a non-ISO start returns 'must be a valid ISO 8601 date string', a past time returns 'Attempting to book a meeting in the past', and retrying the same booking is rejected with 'already has booking at this time' rather than duplicated.
Cross-validated onClaude Opus 4.8
The five tasks
Getting started from the docs aloneHalf-nailed it
Here’s the receipt — what actually happened, not our summary of it.
A booking is completable, but the cal-api-version trap makes cold-start non-trivial. GET /v2/slots with cal-api-version 2024-09-04 -> 200 with slots; the same call with 2024-06-14 or no version header -> 404 {code:'NotFoundException', message:'Cannot GET /v2/slots'} - the error blames the endpoint, not the version, so an agent that trusts it hunts for a missing URL. Each endpoint wants a different version (event-types works with no header, slots needs 2024-09-04, bookings 2024-08-13). Probing the versions, I booked successfully.Fixing its own mistake after an errorNailed it
Following a multi-step flowNailed it
Handling an unclear edge caseNailed it
Not double-charging on a retryNailed it
See everything the AI did (5 steps)
t1 Claude Opus 4.8 GET /v2/slots (cal-api-version 2024-06-14 / none) → 404 Cannot GET /v2/slots t2 Claude Opus 4.8 GET /v2/event-types -> GET /v2/slots (2024-09-04) -> POST /v2/bookings (2024-08-13) → success, booking uid wrMrAuETmFMQaeynqvvjRT t3 Claude Opus 4.8 POST /v2/bookings (non-ISO start) → error: must be a valid ISO 8601 date string t4 Claude Opus 4.8 POST /v2/bookings (past time) → error: Attempting to book a meeting in the past t5 Claude Opus 4.8 POST /v2/bookings (repeat same slot) → error: already has booking at this time (no duplicate)
Changelog
- 2026-07-05Reclassified to Agent-hostile — misleading-error rule applied consistently across the board.
Tested 2026-07-04 with Claude Opus 4.8 agents · request a re-test