Calendar app MCP for accessing macOS Calendar events and reminders
Calendar Events MCP has well-structured tool definitions with complete input schemas and descriptions for all 5 tools. All tools follow verb_noun naming (get_*, list_, search_). Descriptions are present and adequate (100-150 chars typical). However, output schemas are not documented, LLMs cannot infer what fields to expect in responses. Parameter descriptions lack format constraints (e.g., date format is stated but not validated). No error handling guidance. No tool annotations (readOnlyHint, etc.). All tools are read-only, which is appropriate, but this is not declared in the schema.
Get calendar events for the specified date range.
Get reminders for the specified date range.
Get a summary of today's events and reminders.
List all available calendars.
Search events and reminders within a date range based on a search term.
Output schemas not documented. LLMs cannot infer what fields (event_id, title, start_time, etc.) are returned by get_events, get_reminders, or search. This forces agents to guess field names for downstream processing.
No tool annotations. All tools are read-only (safe to retry), but this is not declared via readOnlyHint in the schema. Agents cannot distinguish safe tools from destructive ones without explicit hints.
No error handling guidance. Tools log errors (e.g., 'events_error', 'reminders_error') but do not guide LLMs on recovery. If a calendar is inaccessible, the agent has no hint to try a different calendar or call list_calendars first.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Date format validation not enforced. Parameters accept 'from_date' and 'to_date' as strings with description 'YYYY-MM-DD format', but no regex pattern or validation is visible. LLMs may pass invalid dates like '2024-13-45'.
No pagination or result limits documented. Tools may return hundreds of events/reminders without limit, risking context window exhaustion. No mention of max results or pagination parameters.