CardDAV MCP server, targeted at Synology Contacts (but generic CardDAV). Exposes address books and contacts as MCP tools.
Server has 6 tools with basic naming (verb_noun pattern) and descriptions present. However, critical gaps undermine quality: (1) Parameter descriptions are minimal or missing detail on format/constraints. E.g., 'emails' param in create_contact has no guidance on object structure (should it be {type, value}?). (2) Array item schemas lack specificity, 'items: {type: object}' provides no field definitions, forcing LLMs to guess structure. (3) No output schemas documented anywhere, LLMs cannot predict response fields or plan chaining. (4) Error handling absent, no guidance on retryability, user-fixable vs fatal errors, or recovery paths. (5) Descriptions are functional but generic (avg ~60 chars), lacking WHEN/WHY context. Tool names are clear (list_*, get_*, create_*, update_*, delete_*) but descriptions do not explain prerequisites or dependencies.
Create a new contact in an address book
Delete a contact from an address book
Get detailed information about a specific contact
List all address books available on the CardDAV server
List all contacts in a specific address book
Update an existing contact
Array parameters lack item schema definitions. 'emails', 'phones', 'addresses', 'urls' in create_contact and update_contact specify items: {type: object} with no field names, types, or descriptions. LLMs cannot construct valid payloads.
No output schemas documented. Tools return vCard data but LLMs have no visibility into response structure (fields, types, nesting). Prevents downstream tool chaining and forces agents to guess field names.
Parameter descriptions lack format/constraint guidance. 'address_book' param described as 'The href of the address book' but no explanation of format (URL? path? opaque ID?). 'full_name' has no length limits or character restrictions stated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No error handling guidance. Tools do not document what errors are retryable (network timeout vs invalid contact_href), user-fixable (malformed email), or fatal (auth failure). Agents cannot plan recovery.
Destructive tool (delete_contact) lacks confirmation/dry-run pattern. No mention of irreversibility or safeguards. Agents may delete contacts unintentionally.