gcalc-mcp demonstrates solid tool design with consistent naming (verb_noun pattern: gcal_*), comprehensive parameter descriptions, and clear input schemas. All 12 tools have descriptions (avg ~120 chars) and typed parameters with constraints. However, output schemas are not documented in the source, parameter descriptions lack format/range details in several cases, and error handling guidance is minimal. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Composition is strong, tools are single-responsibility and chainable via calendar/date parameters.
Add a detailed event non-interactively. title and when are required; other fields are optional.
List calendar events as JSON for an optional time window. Dates accept natural language (e.g. 'today', 'tomorrow', '2026-06-21', 'next monday'). Returns the agenda for the default range when no dates are given.
Show metadata about the saved gcalcli auth token. Call this first to verify gcalcli is installed and authenticated (run `gcalcli init` once if not).
Render a month ASCII calendar grid for the month containing the start date.
Render a week-based ASCII calendar grid starting at a date. Defaults to 1 week from today.
Find conflicting (overlapping) events, optionally filtered by search text and time window (defaults from now through 30 days). Returns JSON.
Output schemas not documented. Tools return JSON but LLMs cannot infer field names, types, or structure. Agents cannot plan downstream calls or extract data reliably.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. gcal_delete is DESTRUCTIVE and gcal_quick_add/gcal_add_event/gcal_import are WRITE operations, annotations enable safer agent planning.
Parameter descriptions lack format/range constraints. 'start' and 'end' accept natural language but no examples of valid formats (ISO 8601, 'today', 'next monday'). 'weeks' and 'duration' are numeric but no min/max bounds stated.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
DESTRUCTIVE: permanently delete EVERY event matching the search text within the optional window. Requires confirm=true. Scope precisely with text + start/end to avoid deleting unintended events.
Import events from an ICS/vCal source into a single calendar. Provide exactly one of 'file' (path) or 'content' (raw ICS text). Use dump=true to preview without importing.
List the Google Calendars available to the authenticated account as a plain-text table.
Quick-add an event from a natural-language phrase, e.g. 'Lunch with Sam tomorrow 12pm'. gcalcli parses the date/time/title from the text.
Case-insensitive search for events matching text, optionally within a time window. Returns matching events as JSON.
List events updated since a given datetime, within an optional window (defaults through end of current month). Returns JSON.
No error recovery guidance. Tools may fail (e.g. invalid date, calendar not found, auth missing) but descriptions do not explain what to do next or which tools to call for recovery.
gcal_delete requires confirm=true but no dry-run option. Agents cannot preview what will be deleted before committing. High risk of accidental mass deletion.