macOS Calendar & Reminders MCP server - Native EventKit integration
CheICalMCP demonstrates solid tool definition quality across 29 calendar and reminder management tools. All tools have descriptions (10-300+ chars), consistent naming conventions (verb_noun pattern: list_, create_, delete_, update_, search_, etc.), and explicit JSON Schema input definitions. Tool annotations are present and correct (READ_ONLY, WRITE, DESTRUCTIVE markings). However, there are notable gaps: (1) output schemas are not documented anywhere in the visible source code, the server returns results but agents cannot see what fields to expect, breaking pattern:response-shaper and pattern:tool-chain composition; (2) parameter descriptions exist but many are minimal (5-30 chars) and lack actionable constraints (no examples of valid date formats despite list_events claiming 'flexible date formats'; no validation rules stated); (3) batch tools (create_events_batch, delete_events_batch, etc.) accept 'events' or 'reminder_ids' arrays but do not document whether they return per-item success/failure or all-or-nothing behavior; (4) error handling is not visible, no recovery guidance in descriptions; (5) some parameter relationships are underdocumented (e.g., calendar_source is marked 'required when multiple calendars share the same name' but this conditional dependency is buried in one tool's description and not standardized). Naming is excellent, all tools start with action verbs and are unambiguous. Schemas are present and typed (object/string/boolean/array/integer), meeting the baseline for parameter documentation.
Check for conflicting events in a time range.
Delete completed reminders from a reminder list or list of specific reminder IDs.
Mark a reminder as complete. Annotated destructive because completing a recurring reminder advances the series in place and files the finished occurrence as a separate completed record; once the identifier has rolled over, undo refuses and discards the entry. Tool-wide annotation applies to all reminders.
Copy a calendar event to another calendar.
Create a new calendar or reminder list.
Create a new calendar event.
Output schemas not documented. Agent cannot predict what fields to expect from tool responses, breaking tool-chain composition and forcing agents to infer structure on each call. None of the 29 tools document their return type or schema.
Batch operation tools (create_events_batch, delete_events_batch, move_events_batch, create_reminders_batch, delete_reminders_batch) do not document per-item success/failure behavior. Agent does not know if one failed item causes the entire operation to abort or if partial success is returned.
Parameter constraints missing or minimal. 'list_events' claims support for 'flexible date formats' (ISO8601, datetime, date, time) but does not provide regex patterns or concrete examples. 'color' parameter in create_calendar says 'optional hex color code (e.g., #FF5733)' but no validation rule or format pattern documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Create multiple calendar events.
Create a new reminder.
Create multiple reminders.
Delete a calendar by its identifier.
Delete a calendar event.
Delete multiple calendar events.
Delete a reminder.
Delete multiple reminders.
Find duplicate events in calendars.
List all available calendars. Returns both event calendars and reminder lists.
List calendar events in a date range with optional filtering, sorting, and limiting. Supports flexible date formats: ISO8601 (2026-01-30T00:00:00+08:00), datetime (2026-01-30T00:00:00), date only (2026-01-30), or time only (14:00).
Quickly list events for today, tomorrow, this week, or this month.
List all hashtags found in reminder notes, with their occurrence counts.
List reminders from a specific calendar or reminder list.
Move multiple events to another calendar.
Redo the last undone calendar or reminder operation.
Search for calendar events by keyword.
Search for reminders by keyword.
Undo the last calendar or reminder operation.
View the undo/redo history.
Update a calendar's properties (rename or change color).
Update an existing calendar event.
Update an existing reminder.
Conditional parameter dependencies documented in only one tool ('calendar_source is required when multiple calendars share the same name' in list_events) and not standardized across all tools. Agent may not recognize same constraint applies to create_event, update_event, copy_event, etc.
Error handling and recovery guidance absent. No tool description explains what to do if an event creation fails, a calendar is not found, or a date format is rejected. Agents have no actionable error paths.
Descriptions for destructive operations (delete_calendar, delete_event, delete_reminder, delete_events_batch, delete_reminders_batch, complete_reminder) are minimal (45-60 chars) and do not explicitly state the operation is irreversible or offer undo guidance.
Undo/Redo tool descriptions ('Undo the last calendar or reminder operation' / 'Redo the last undone calendar or reminder operation') lack detail on scope, limitations, and whether these operations are stateful (i.e., if the server is restarted, is undo history preserved?).