Serverless MCP server for Google Contacts with per-user OAuth on AWS Lambda
This server has solid tool naming conventions and good parameter schemas with proper constraints (enums, min/max bounds). Descriptions are present and moderately detailed for most tools. However, output schemas are completely undocumented, the tool definitions do not specify what fields are returned, preventing LLMs from planning downstream operations. Error handling guidance is absent. Parameter descriptions vary in quality, and some critical context is missing (e.g., what fields does get_contact return? what does search_contacts return beyond matches?). The server sits in the 'fair to good' range but falls short of production-grade due to missing output documentation and error recovery guidance.
Get detailed information about a specific contact by resource name.
List contacts for the authenticated user. Returns a paginated list of contacts.
Search contacts across all fields including names, emails, phone numbers, organizations, and more.
Search directory contacts (Google Workspace only). Only available for Google Workspace accounts.
No output schemas documented for any tool. LLMs cannot plan multi-step workflows, extract chaining IDs, or validate results.
No error handling guidance. Tools do not specify what errors are possible, what causes them, or what the LLM should do (retry, ask user, use alternative tool).
Missing chaining context in tool descriptions. Agents do not know which output fields from list_contacts/search_contacts they should pass to get_contact (assumed resourceName but not explicit).
readMask parameter descriptions lack detail. What fields are available? Are they the same across all tools? What is the default behavior?
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 75 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 54 | - | v1 |
get_contact description uses vague language ('detailed information'). Should explicitly state which fields are returned and how this differs from list_contacts.