MCP server for Apple Reminders on macOS via EventKit (pyobjc)
Apple Reminders MCP has 8 tools with consistent naming (verb_noun pattern) and basic descriptions. However, descriptions are generic and lack LLM-optimization guidance. Parameter descriptions exist but are minimal (10-30 chars). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; most tools return bare dicts without recovery guidance. No input validation constraints (enums, ranges) are declared. Tool composition is reasonable but lacks pagination for list operations.
Create a new reminder. Due date should be ISO 8601 (e.g. 2026-04-08T10:00:00).
Mark a reminder as complete. Searches incomplete reminders by name.
Create a new reminder list.
Delete a reminder by name search. If multiple match, returns the list.
Delete a reminder list by name. All reminders in the list will be deleted.
List all reminder lists with counts.
List reminders. By default shows only incomplete. Optionally filter by list.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Tools return dicts but no schema is declared in tool definitions.
Parameter descriptions are minimal (10-30 chars) and lack actionable constraints. 'Optional: filter reminders by list name' does not explain what happens if list is not found or how to discover valid list names.
No input validation constraints declared. 'priority' parameter accepts free-form strings; should be enum [high, medium, low, none]. 'due' date format is documented in description but not enforced via schema pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Search reminders by name and notes across all lists.
Error handling is minimal. Tools return bare dicts like {'error': 'List not found: X'} without recovery guidance. LLM cannot determine if error is retryable or what to do next.
List operations (list_reminders, list_reminder_lists) lack pagination. No limit, offset, or cursor parameters. Large reminder sets will blow context window.