MCP server for Google Calendar integration enabling calendar event management, availability checking, and meeting scheduling
Server has 7 tools with basic descriptions and parameter schemas, but significant quality gaps prevent production use. All tools have descriptions (good), but most are under 100 chars and lack actionable context. Parameter schemas exist but use string types for everything (dates, booleans, numbers), forcing LLMs to guess formats. No output schemas documented. Error handling returns raw exception strings instead of recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Parameter descriptions are minimal, e.g., 'Duration in minutes (defaults to 30)' lacks range constraints. No idempotency guarantees or confirmation patterns for destructive operations (cancel_meeting). Tool composition is reasonable (7 focused tools), but parameter naming inconsistencies (working_hours_only as string vs boolean) and missing enum constraints invite hallucination.
Cancel an existing meeting.
Check calendar availability between two dates. Dates should be in YYYY-MM-DD format.
Find free time slots between two dates.
Get detailed information about a specific calendar event.
List upcoming calendar events.
Reschedule an existing meeting to a new time. new_start_datetime format: YYYY-MM-DD HH:MM.
All numeric and boolean parameters use string type instead of proper JSON Schema types (integer, boolean). Forces LLMs to guess formats and invites type confusion.
No output schemas documented. LLMs cannot predict response structure, making downstream tool chaining and data extraction error-prone.
Error responses return raw exception strings (e.g., 'Error checking availability: {str(e)}') instead of actionable recovery guidance. LLMs cannot determine if error is retryable or what to do next.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Schedule a new meeting. start_datetime format: YYYY-MM-DD HH:MM. attendees: comma-separated emails.
Destructive tool (cancel_meeting) lacks confirmation pattern or dry-run support. Agents can accidentally delete meetings without verification.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from dangerous writes without reading descriptions.