MCP server for Cal.com Calendar API integration
Server has 4 tools with complete input schemas and basic descriptions. All tools follow verb_noun naming (calcom_add/update/delete/list_appointment). Descriptions are present but generic (avg 150 chars, below production baseline of 194). Parameter descriptions are minimal and lack format constraints. No output schema documentation. No error handling guidance. Rate limiting is implemented server-side but not exposed to LLM. Missing idempotency hints for write operations.
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 output schema documentation. LLMs cannot plan downstream calls or extract required fields (e.g., booking ID from add_appointment response). Baseline: 100% of A+ tools document return types.
Parameter descriptions lack format constraints and validation rules. E.g., 'startTime' says 'ISO format' but does not specify timezone handling, whether fractional seconds are required, or what happens if times are invalid. Baseline: descriptions should state format, range, and allowed values.
Destructive operations (delete_appointment, update_appointment) lack confirmation or dry-run support. No guidance on recovery if agent makes a mistake. Agents should be able to preview changes before committing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Error handling is minimal. Code throws generic 'Rate limit exceeded' and API errors without actionable recovery guidance. LLMs need to know: is this retryable? Should I ask the user? What should I try next?
list_appointments lacks pagination support. No limit parameter, no offset/cursor, no total count. Large result sets will blow context window. Baseline: tools returning lists should support page/offset and limit.