A backend service that integrates Google Calendar, Gmail, and other services through an LLM-powered agent that selects and routes user queries to appropriate tools
This MCP server exhibits significant quality gaps across tool naming, descriptions, parameter schemas, and error handling. While 16 tools are declared, only partial schema information is visible. Naming conventions are inconsistent (mix of verb_noun and descriptive phrases). Descriptions exist but many are generic or lack LLM-specific context about when to use the tool. Parameter schemas are incomplete, many parameters visible in the code lack formal type definitions or constraints. Error handling is minimal, with no recovery guidance or categorization. The server appears to be a REST API wrapper rather than a true MCP implementation; transport is HTTP but there is no evidence of proper MCP protocol framing, stateless request handling, or per-request _meta headers required by the current spec.
Authenticates user via Google OAuth 2.0 authorization code flow. Exchanges authorization code for tokens and creates/updates user in database. Returns JWT token for subsequent API calls.
Classifies calendar-related queries into specific operations using Gemini LLM: create_event, reschedule_event, cancel_event, list_events, or check_availability
Classifies user query into one of four service categories using Gemini LLM: google calendar, mailing service, task management, or documenting service
Creates a calendar event in Google Calendar with the provided details including summary, start/end times, attendees, and description
Deletes a calendar event from Google Calendar by searching for the event by summary and optional date, then removing it
Placeholder for drive management functionality. Currently not implemented.
Enhances user query with historical context and user metadata using Gemini LLM to create more complete, actionable queries for services like mailing and calendar
Missing output schemas for 14 of 16 tools. LLMs cannot predict the response structure, preventing reliable downstream tool chaining and field extraction.
Enumerated parameters not enforced in schema. 'intent', 'givenIntent', and 'operation' parameters accept freeform strings instead of enum constraints, inviting hallucinated invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Extracts structured event creation details from natural language query using Gemini LLM, including summary, start/end times, attendees, and description
Extracts event summary and date from natural language delete request using Gemini LLM to identify which event to delete
Retrieves historical queries for a specific intent/service from user profile to provide context for query enhancement
Health check endpoint to verify server status
Retrieves up to 10 upcoming calendar events from user's primary Google Calendar starting from current time, sorted by start time
Retrieves up to 10 recent emails from user's Gmail inbox with subject, sender, and snippet information
Main orchestrator for Google Calendar operations - routes to appropriate operation handler (create, reschedule, cancel, list, check availability) based on classified operation type
Processes user query by routing it to appropriate service (Google Calendar, Mailing Service, Task Management, or Document Service) based on LLM-powered intent classification
Validates JWT authentication token. Returns success if token is valid and not expired.
No parameter constraints (format, length, range). 'query' parameters are unbounded strings; 'email' parameters lack validation; timestamps lack timezone specification.
Destructive operation (delete_calendar_event) lacks confirmation or dry-run pattern. No safeguard against accidental deletion or ambiguous matches.
Error handling absent or non-actionable. No recovery guidance, error categorization, or actionable error messages. Tools return raw HTTP status codes without context.
drive_management is a placeholder with no implementation. Exposing unimplemented tools wastes agent reasoning and invites errors.
No pagination support. list_emails and list_calendar_events hard-cap at 10 items with no offset/limit parameters or next_cursor. Large result sets will exhaust context.
Mutually exclusive parameters not documented. authenticate_user accepts either 'code' OR 'token + email + name', but this dependency is not stated in parameter descriptions, inviting incorrect calls.
Tool composition issues. Intent extraction and enhancement are separate tools called sequentially; this could be unified into fewer calls. submit_query internally classifies intent, duplicating classify_intent functionality.
Timezone handling undefined. Time-related parameters (start, end, event date) lack timezone context. LLMs will guess incorrectly, producing wrong calendar entries.