Apple MCP tools for contacts, notes, messages, and mail integration
Apple MCP has 8 tools with complete schemas and descriptions, but significant quality gaps limit production readiness. All tools have input schemas with type definitions and descriptions, meeting baseline requirements. However, descriptions are generic (avg ~80 chars, below 194-char baseline), lack WHEN/WHY guidance, and omit output schema documentation. Parameter descriptions are present but often vague ('optional for X operation'). No tool declares output structure, pagination, or error recovery paths. Naming is reasonable (verb_noun style) but several tools bundle multiple operations (notes, messages, mail, calendar, reminders, maps) into single tools with operation enums, violating single-responsibility principle. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite WRITE operations. Error handling is absent from visible code.
Search, create, and open calendar events in Apple Calendar app
Search and retrieve contacts from Apple Contacts app
Interact with Apple Mail app - read unread emails, search emails, and send emails
Search locations, manage guides, save favorites, and get directions using Apple Maps
Interact with Apple Messages app - send, read, schedule messages and check unread messages
Search, retrieve and create notes in Apple Notes app
Search, create, and open reminders in Apple Reminders app
Multi-operation tools violate single-responsibility principle. notes, messages, mail, calendar, reminders, and maps each bundle 3-7 operations (search/create/send/list) into one tool with operation enum. This forces LLMs to reason about which operation to invoke and makes error handling ambiguous.
No output schemas documented. Tool descriptions state what they do but never specify return structure, field names, or types. LLMs cannot plan downstream tool calls or extract required data (e.g., does calendar.create return event_id? What fields does contacts.search return?).
No tool annotations despite WRITE operations. messages (send/schedule), mail (send), notes (create), calendar (create), reminders (create), and maps (save/pin/addToGuide) modify state but lack destructiveHint or idempotentHint annotations. Agents cannot distinguish safe-to-retry from irreversible calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Search the web using DuckDuckGo and retrieve content from search results
Descriptions lack WHEN/WHY guidance and are below baseline length. Average ~80 chars vs. 194-char baseline. E.g., 'Search and retrieve contacts from Apple Contacts app' does not explain when to use contacts vs. webSearch, what data is returned, or prerequisites. No dependency hints.
Parameter descriptions are vague and conditional. E.g., 'required for search operation' appears in multiple params but does not clarify what happens if omitted or what error is returned. No actionable error guidance or recovery paths visible in code.