Cloudflare Worker exposing an MCP server backed by Nextcloud — files, calendar, and tasks
dav-worker provides 16 tools across calendar, tasks, and files domains with consistent naming (verb_noun pattern) and basic descriptions. All tools have input schemas with type definitions and parameter descriptions. However, descriptions are minimal (10-50 chars, well below the 194-char baseline), output schemas are not documented, and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Parameter descriptions lack format constraints, ranges, or validation rules. Tools lack idempotency guarantees and confirmation patterns for destructive operations.
Create a new event in a calendar
Create a new task in a task list
Delete a calendar event
Delete a file
Delete a task
Get events from a specific calendar within a date range
Get tasks from a specific task list
List all available calendars from Nextcloud
Descriptions are critically short (10-50 chars vs 194-char baseline). LLMs cannot determine when to select tools or distinguish between similar operations (e.g., update_calendar_event vs update_task). Descriptions must explain WHAT, WHEN, and WHAT IT RETURNS.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., calendar_id from list_calendars to pass to get_calendar_events). Responses must declare field types and structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
List files in a directory
List all available task lists from Nextcloud
Read the session configuration
Read the contents of a file
Update an existing calendar event
Update an existing task
Write or update the session configuration
Write or update a file
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications (READ_ONLY, WRITE, DESTRUCTIVE). Clients cannot determine safe retry behavior or warn users before destructive operations.
Parameter descriptions lack format constraints, ranges, or validation rules. E.g., 'start_date' and 'end_date' say 'ISO 8601 format' but do not specify timezone handling, whether times are required, or what happens if start > end. LLMs cannot self-correct invalid input.
Destructive operations (delete_calendar_event, delete_task, delete_file) lack confirmation or dry-run patterns. Agents can delete data without user approval, risking data loss.