MCP server for Radicale CalDAV calendar and task management. Exposes tools for event management, free/busy search, conflict detection, and task/to-do tracking designed for LLM agents.
Strong foundation with 8 well-named tools following verb_noun convention (get_, create_, update_, delete_, list_, complete_). All tools have descriptions (avg 150 chars, within 10-1024 baseline). Input schemas are complete with types and descriptions for all parameters. Output schemas documented in docstrings. Key gaps: no error handling guidance (recovery paths, retryability classification), no tool annotations (readOnlyHint/destructiveHint), and parameter descriptions lack constraint details (e.g., ISO 8601 format validation rules, timezone enum values). Composition is sound, tools are single-responsibility and chainable (e.g., get_events → create_event). No security issues detected (no secrets in params). Naming is clear and unambiguous across the 8-tool set.
Mark an existing task / to-do item as COMPLETED and stamp the completion time.
Create a new calendar event entry in Radicale with validation and optional conflict detection.
Create a new CalDAV task / to-do item (VTODO).
Remove an event permanently from the calendar using its unique UID.
Search and retrieve calendar events within a specified date/time range.
Calculate and return available open time slots where no overlapping events exist during business hours.
No error handling guidance. Tools lack recovery hints (e.g., 'If event not found, call get_events() first') and error classification (retryable vs. user-fixable vs. fatal). LLMs cannot determine next steps on failure.
Missing tool annotations. No readOnlyHint, destructiveHint, or idempotentHint attributes. Agents cannot infer which tools are safe to retry or have side effects.
Parameter descriptions lack constraint details. ISO 8601 format is mentioned but validation rules (e.g., timezone offset required vs. optional, date-only vs. datetime) are not specified. 'timezone' param in get_free_busy_slots lacks enum of valid IANA values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Fetch tasks / to-dos (VTODO items) from the collection, filtered by status.
Update specific fields of an existing calendar event identified by UID. Only fields explicitly provided will be modified.
No confirmation/dry-run pattern for destructive operations. delete_event and update_event (status=CANCELLED) lack a dry-run or confirmation step. Agents can accidentally delete events without verification.
Output schemas documented in docstrings but not formally in JSON Schema. Agents must parse prose descriptions to infer response structure. Formal schema definitions (e.g., in tool metadata) would improve clarity.