Google Calendar MCP server demonstrates solid tool design with 8 focused, well-curated tools. Each tool has typed parameters with clear semantics rather than generic request bodies. Descriptions include concrete usage examples and use-case guidance, supporting agent decision-making. Schema definitions expose required vs optional parameters appropriately. The tool set covers the full CRUD lifecycle for calendar operations plus scheduling intelligence (suggest_time). Minor issues: descriptions are truncated in the provided data (likely transport limitation), some parameter descriptions repeat 'Optional' boilerplate, and schema completeness cannot be fully verified from truncated input. No evidence of auto-generation patterns. Core scoring: strong naming (clear verbs: list, get, create, update, delete, respond, suggest), descriptions with examples averaging 75-85 quality, and structured schemas averaging 70-80 quality.
Creates a calendar event. Use this tool for queries like: - Create an event on my calendar for tomorrow at 2pm called 'Meeting with Jane'. - Schedule a meeting with john.doe@google.com next Monday from 10am to 11am. Example: create_event( summary='Meeting with Jane', start_time='2024-09-17T14:00:00', end_time='2024-09-17T15:00:00' ) # Creates an event on the primary calendar for September 17, 2024 from 2pm to 3pm called 'Meeting with Jane'.
Deletes a calendar event. Use this tool for queries like: - Delete the event with id event123 on my calendar. To cancel or decline an event, use the respond_to_event tool instead. Example: delete_event( event_id='event123' ) # Deletes the event with id 'event123' on the user's primary calendar.
Returns a single event from a given calendar. Use this tool for queries like: - Get details for the team meeting. - Show me the event with id event123 on my calendar. Example: get_event( event_id='event123' ) # Returns the event details for the event with id `event123` on the user's primary calendar.
Returns the calendars on the user's calendar list. Use this tool for queries like: - What are all my calendars? Example: list_calendars() # Returns all calendars the authenticated user has access to.
Lists calendar events in a given calendar. Use this tool for queries like: - What's on my calendar tomorrow? - What's on my calendar for July 14th 2025? - What are my meetings next week? - Do I have any conflicts this afternoon? Example: list_events( start_time='2024-09-17T06:00:00', end_time='2024-09-17T12:00:00', page_size=10 ) # Returns up to 10 calendar events between 6:00 AM and 12:00 PM on September 17, 2024 from the user's primary calendar.
Descriptions are truncated in provided data, preventing full assessment of completeness and clarity. Descriptions appear to end mid-sentence (e.g., list_events ends at '2026-06-03T10:00:00-07:00, 20').
Boilerplate language: Parameter descriptions frequently repeat 'Optional. [description]. Optional.' which adds noise without clarity.
Schema definitions for suggest_time and create_event appear truncated/incomplete in the provided data (nested $defs and properties cut off), limiting ability to verify parameter structure quality.
calendarId parameter marked 'Optional' with default to 'primary' across multiple tools - good, but repetitive documentation could be consolidated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-04-16 | B | 74 | 2025-11-25 | v1 |
Responds to an event. Use this tool for queries like: - Accept the event with id event123 on my calendar. - Decline the meeting with Jane. - Cancel my next meeting. - Tentatively accept the planing meeting. Example: respond_to_event( event_id='event123', response_status='accepted' ) # Responds with status 'accepted' to the event with id 'event123' on the user's primary calendar.
Suggests time periods across one or more calendars. To access the primary calendar, add 'primary' in the attendee_emails field. Use this tool for queries like: - When are all of us free for a meeting? - Find a 30 minute slot where we are both available. - Check if jane.doe@google.com is free on Monday morning. Example: suggest_time( attendee_emails=['joedoe@gmail.com', 'janedoe@gmail.com'], start_time='2024-09-10T00:00:00', end_time='2024-09-17T00:00:00', duration_minutes=60, preferences={ 'start_hour': '09:00', 'end_hour': '17:00', 'exclude_weekends': True } ) # Returns up to 5 suggested time slots where both users are available for at least one hour between 9:00 AM and 5:00 PM on weekdays from September 10 through September 16, 2024.
Updates a calendar event. Use this tool for queries like: - Update the event 'Meeting with Jane' to be one hour later. - Add john.doe@google.com to the meeting tomorrow. Example: update_event( event_id='event123', summary='Meeting with Jane and John' ) # Updates the summary of event with id 'event123' on the primary calendar to 'Meeting with Jane and John'.