A comprehensive MCP server ecosystem supporting WordPress, Google Workspace (Calendar, Gmail, Meet), and multi-LLM clients (OpenAI, Azure, Gemini)
This server provides 13 Google Workspace integration tools with generally good parameter schemas and descriptions. Most tools follow verb_noun naming conventions (list_calendars, get_calendar_events, create_calendar_event, delete_calendar_event, etc.). However, there are notable gaps in error handling guidance, incomplete output schema documentation, and missing descriptions for some critical parameters. The descriptions are present but often lack the prescriptive guidance needed for LLM tool selection (when to call vs alternatives, prerequisites, return value clarity). Parameter constraints are well-defined in most cases (RFC3339 format, min/max for integers, enums implicit), but some descriptions could be more actionable. No toolAnnotations (readOnlyHint, destructiveHint, idempotentHint) are present in the schemas, despite some tools being explicitly READ_ONLY or DESTRUCTIVE. Output schemas are not documented, the code shows JSON responses but LLMs cannot infer the structure. Security handling appears sound (credentials passed server-side via `__credentials__` arg, no secrets in params), but audit and rate-limiting are not visible.
Retrieves multiple Gmail email messages by their IDs in a single request, including the full message bodies and attachment IDs.
Cancels an existing Google Meet meeting. if you need event id use get_all_meet_meetings with the start time and end time of the meeting to get the event id
Creates a new event in a specified Google Calendar of the specified user.
Creates a draft email message from scratch in Gmail with specified recipient, subject, body, and optional CC recipients. Do NOT use this tool when you want to draft or send a REPLY to an existing message. This tool does NOT include any previous message content. Use the reply_gmail_email tool with send=False instead.
Creates a new Google Meet meeting and returns the meeting details including the join link.
Output schemas not documented. Tools return JSON responses but no schema is visible to LLMs. E.g., get_calendar_events returns calendar event objects but LLMs cannot infer structure (fields, types, nesting). This forces trial-and-error parsing and risks extraction errors.
Missing toolAnnotations (readOnlyHint, destructiveHint, idempotentHint). Twelve of 13 tools are explicitly marked with Risk: READ_ONLY, WRITE, or DESTRUCTIVE in metadata, but schemas lack these annotations. LLMs cannot infer safety/idempotence from names alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 22 | - | v1 |
Deletes an event from the user's Google Calendar by its event ID.
Deletes a draft email message by its draft ID.
Retrieves all Google Meet meetings from the calendar within a specified time range.
Retrieves calendar events from the user's Google Calendar within a specified time range.
Retrieves a complete Gmail email message by its ID, including the full message body and attachment IDs.
Lists all calendars accessible by the user. Call it before any other tool whenever the user specifies a particular agenda (Family, Holidays, etc.).
Query Gmail emails based on an optional search query. Returns emails in reverse chronological order (newest first). Returns metadata such as subject and also a short summary of the content.
Reschedules an existing Google Meet meeting to a new time. if you need event id use get_all_meet_meetings with the start time and end time of the meeting to get the event id
Descriptions for destructive operations lack recovery guidance. delete_calendar_event, delete_gmail_draft, cancel_meet_meeting describe what they do but do not explain: 'This cannot be undone. Confirm with the user before proceeding' or offer a preview/confirmation step.
cancel_meet_meeting and reschedule_meet_meeting descriptions hint at a discovery pattern ('use get_all_meet_meetings with time range to get event_id') but do not clearly state this as a prerequisite. LLMs may invoke these without first retrieving the event_id, causing failures.
Parameter descriptions lack actionable constraints in some cases. E.g., timezone parameter in create_calendar_event and create_meet_meeting says 'Defaults to UTC if not specified' but does not document valid timezone format (IANA TZ DB identifiers? Offset? Abbreviations?).
No error handling or recovery guidance documented. If create_calendar_event fails due to scheduling conflict, if query_gmail_emails times out, or if attendee email is invalid, tools do not indicate what the LLM should try next. Error responses are not shown.
Pagination not documented for list-like results. query_gmail_emails and get_all_meet_meetings accept max_results, but no mention of offset, page, cursor, or next_token fields in responses. Large result sets may exceed context limits without guidance.
No batch operations for common multi-use patterns. If an LLM needs to delete 10 calendar events, it must call delete_calendar_event 10 times. A bulk_delete_calendar_events tool accepting event_id[] would be more efficient.