Skip to main content
Glama

drafts

Read-only

List Mail drafts to retrieve their message IDs for deleting or sending approved drafts; read-only and returns up to 25 pointers. Use IDs to pick specific drafts without subject matching.

Instructions

List Mail drafts, newest mailbox order. Returns {results, truncated?}; truncated means the 25 cap was reached. Each record is a citable pointer (id, summary, deeplink, folder = "drafts") PLUS discrete subject and to fields, so picking out one specific draft is a field comparison, not substring-matching the summary — which collides whenever two drafts share a subject. The id is the RFC822 message-id: pass it to delete_draft, or to send_mail(draft_id=…) to send a draft the human has approved. A compose window Mail has not autosaved yet (~10-15s) is absent here — wait, do not retry the create. Read-only; needs Automation access for Mail.

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.15.1

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive, but the description adds substantial context beyond them: the 25-record truncation cap and its `truncated` flag, newest-first ordering, the shape of each record, that the id is an RFC822 message-id, the ~10-15s autosave visibility lag with an explicit 'do not retry' instruction, and the Automation access requirement. That is exactly the operational detail annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and the return shape, then layers in the identifier contract and the caveat. Dense and mostly earned, though the explanation of why field comparison beats substring-matching on the summary is slightly long-winded for the value it adds.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still surfaces the two things an agent must know before calling: the truncation cap and the autosave delay. Combined with the id→delete_draft/send_mail handoff and the permissions note, nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. It correctly spends no words on parameter semantics and instead invests in return-value and identifier meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource plus ordering semantics ("List Mail drafts, newest mailbox order"), which immediately distinguishes it from mailbox-wide siblings like mail, mail_search, and mail_overview. It also clarifies the record type (citable pointer with folder = "drafts") so there's no ambiguity about scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete downstream routing: pass the id to delete_draft or send_mail(draft_id=…) for a human-approved draft, and explicitly says to wait rather than retry a create for an un-autosaved compose window. It stops short of naming a sibling to use instead when the agent actually wants to search drafts by content, which is the one remaining gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.