MCP server for Cal.com Calendar API integration
The server defines 4 tools with complete JSON schemas and reasonable descriptions. However, several critical gaps reduce quality: (1) Tool names follow the verb_noun pattern correctly (calcom_add/update/delete/list_appointment), which is good. (2) Descriptions are present and moderately detailed (ranging 80-200 chars), above the hard floor but not optimized for LLM disambiguation. (3) All parameters have type definitions and descriptions, meeting the baseline requirement. (4) However, output schemas are NOT documented, neither in tool descriptions nor in parameter definitions. The LLM cannot infer what fields calcom_list_appointments returns or what structure calcom_add_appointment yields. (5) Error handling is minimal, no recovery guidance, no actionable error messages, no categorization of retryable vs fatal errors. (6) No idempotency or confirmation pattern for destructive operations (delete). (7) The code shows rate limiting logic but no per-parameter constraints (e.g., eventTypeId must be >0, date formats must be YYYY-MM-DD). Overall, the definitions are functionally complete but lack production-grade error guidance and output documentation.
Creates a new appointment in Cal.com calendar. Use this for scheduling new meetings or appointments. Requires event type ID, start time, end time, name, email, and optional notes.
Deletes an existing appointment from Cal.com calendar. Use this for canceling appointments. Requires booking ID.
Lists appointments from Cal.com calendar. Can be filtered by date range. Returns a list of appointments with their details.
Updates an existing appointment in Cal.com calendar. Use this for rescheduling or modifying existing appointments. Requires booking ID and the fields to update.
No documented output schemas. Tools declare what they accept (input schemas) but not what they return. LLMs cannot plan downstream calls or chain tools without knowing response structure.
No error handling guidance. The code throws generic 'Rate limit exceeded' and relies on axios errors, but tool descriptions do not guide the LLM on recovery (retry, check input, etc.). No actionable error messages.
Destructive operation (calcom_delete_appointment) lacks confirmation or dry-run pattern. Agents may delete appointments irreversibly without user consent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
Parameter descriptions lack format and constraint details. startTime and endTime claim ISO format but lack examples or validation guidance. startDate and endDate claim YYYY-MM-DD but no regex or minLength/maxLength in schema.
Tool descriptions do not answer 'when to use this instead of similar tools' or dependencies. E.g., does the LLM need to call list_appointments first to find a bookingId for update/delete? No guidance provided.