Two tools with basic schemas and minimal descriptions. list_unread and search_emails both have input schemas with type definitions, but descriptions are generic (10-20 chars) and lack context for LLM selection. No output schemas documented. Parameters lack depth, max_results has no range constraints, query parameter has no format guidance. No error handling guidance. Tool names follow verb_noun convention (positive), but descriptions fail to explain WHEN to use each tool or what distinguishes them. Missing idempotency hints, permission scopes, and recovery guidance.
List unread Gmail message snippets.
Search emails with a Gmail query.
Descriptions are too short (10-20 chars) and lack LLM-actionable context. 'List unread Gmail message snippets' does not explain when to call this vs search_emails, what fields are returned, or prerequisites.
No output schema documented. LLMs cannot plan downstream calls or extract required fields (e.g., message IDs for follow-up actions) without knowing response structure.
max_results parameter lacks range constraints. No minimum/maximum specified; LLMs could pass 0, negative, or absurdly large values (e.g., 1000000) causing API failures or timeouts.
query parameter in search_emails has no format guidance or examples. LLMs may not know Gmail query syntax (from:, to:, subject:, etc.) and will hallucinate invalid queries.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
No error handling guidance. If OAuth fails, credentials are missing, or API rate limits are hit, the server provides no recovery path or actionable error messages for the LLM.