MCP server providing Google Calendar and Spotify integration tools
Critical gaps across all dimensions. Tool names lack clear action verbs (calendar_read_events vs get_calendar_events). Descriptions are present but generic (10-50 chars, below 194-char baseline). Parameter schemas visible but lack descriptions for complex types (event, changes objects in update/delete tools). No output schemas documented. Error handling returns raw exceptions without recovery guidance. calendar_update_events and calendar_delete_events accept untyped dict parameters with no field documentation, violating schema clarity rules. playback_controller accepts free-form action string instead of enum, inviting hallucinated values. No pagination, no result limits, no chaining IDs in responses.
Create a new Google Calendar event with the provided details
Delete a Google Calendar event
Fetch `top_n` Google Calendar events between a timeframe (in ISO format)
Update a Google Calendar event
Control Spotify playback: play, pause resume, skip, previous, and queue
calendar_update_events and calendar_delete_events accept untyped dict parameters ('event', 'changes') with no field documentation. LLMs cannot infer required fields or structure.
playback_controller accepts free-form 'action' string instead of enum (play|pause|resume|skip|previous|queue). LLMs will hallucinate invalid actions.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., event_id for chaining).
Error handling returns raw exception strings without recovery guidance. 'Error in read_calendar: ...' tells LLM nothing about retry eligibility or next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
Tool names lack clear action verbs. 'calendar_read_events' should be 'get_calendar_events'; 'playback_controller' is vague, should be 'control_spotify_playback' or split into play_spotify, pause_spotify, etc.