MCP server for Google Calendar integration, enabling calendar listing, event management, and scheduling operations
Server has 5 tools with basic verb-noun naming (list_*, create_*, update_*, delete_*). All tools have descriptions (10-50 chars, below ideal 50-200 baseline). Input schemas are present with type declarations but parameter descriptions are minimal or missing. Output schemas are not documented. Error handling is generic (print + re-raise). No tool annotations (readOnlyHint, destructiveHint). Composition is sound, tools are single-responsibility and chainable. Critical gap: parameter descriptions are sparse or absent, violating the 'every parameter needs a description' rule. This forces LLMs to infer intent from names alone.
Creates a new event in the specified calendar
Deletes an event from the specified calendar
Lists all available calendars for the authenticated user
Lists events from a specific calendar within the given time range
Updates an existing event in the specified calendar
Parameter descriptions are minimal or absent. 'calendar_id' appears in 5 tools but is described identically in each; 'time_min'/'time_max' lack format guidance (ISO 8601 is mentioned in docstring but not in schema descriptions); 'attendees' array structure is documented in docstring but not in schema. LLMs cannot read docstrings, they rely on parameter descriptions in the schema.
Output schemas are not documented. Tools return strings (e.g. 'Event created: {summary} ({id})') but LLMs do not know the structure. Downstream tools cannot reliably extract event_id from the response. This breaks tool chaining.
Destructive tool (delete_event) lacks confirmation or dry-run support. No tool annotation (destructiveHint). Agents can delete events without safeguards. Pattern: confirmation-request.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Error handling is generic. Exceptions are caught and re-raised with a print statement. No recovery guidance (e.g. 'calendar_id not found, call list_calendars() first'). LLMs receive no actionable next steps.
No tool annotations. Tools lack readOnlyHint (list_*), destructiveHint (delete_event), or idempotentHint. Clients cannot infer safety properties without reading descriptions.