Skip to main content
Glama

create_draft

Prepare a Gmail draft without sending it—including replies, recipients, and attachments—so messages can be reviewed before explicit confirmation to send.

Instructions

Prepare a Gmail draft without sending it (sending: send_draft, only after the user's yes).

As a reply (replyToMessageId, or threadId to answer the last message of the thread): In-Reply-To, References, "Re:" subject and Gmail thread are filled in; to then defaults to the sender (or Reply-To). Attachments: absolute paths of local files, 25 MB in total; never from a secrets location (vaults, SSH keys, tokens): refused.

Args: body: plain text body (no Markdown). to: recipients (list of addresses, or "Name a@example.com, b@example.com"); required unless replying. subject: subject; when replying and empty, the original subject with "Re:". cc: carbon copy, optional. bcc: blind carbon copy, optional. replyToMessageId: ID of the Gmail message to reply to. threadId: thread to reply to (its last message) when replyToMessageId is empty. attachments: absolute paths of the files to attach, optional.

Input Schema

NameRequiredDescriptionDefault
ccNo
toNo
bccNo
bodyYes
subjectNo
threadIdNo
attachmentsNo
replyToMessageIdNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare write-not-read, non-destructive, non-idempotent and open-world, but the description still adds real behavioral context the annotations don't: attachments are capped at 25 MB, files from secrets locations (vaults, SSH keys, tokens) are refused, and headers/thread/Re: subject are auto-derived in reply mode. It does not address what happens on repeated calls (non-idempotent per annotations implies duplicate drafts) or the failure mode when the 25 MB limit is exceeded.

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?

The key constraint (draft, not sent) is front-loaded and the Args block is scannable. It is somewhat long and restates parameter names already in the schema, plus the mid-sentence parentheticals ('sending: send_draft, only after the user's yes') add slight clutter, but no sentence is truly wasted.

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

Completeness4/5

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

With an output schema present, return values need not be described, and between annotations and the description an agent has enough to call this correctly across compose and reply modes. The remaining gap is duplicate-draft behavior on retry, which matters given idempotentHint=false on a creating tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so for all eight parameters: `body` is plain text with no Markdown, `to`/`cc`/`bcc` accept a list or a comma-separated RFC-style string, `subject` defaults to the original with 'Re:' in reply mode, and `attachments` must be absolute local paths. This is meaning beyond the bare type/title data in the schema.

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?

The first sentence names a specific verb (prepare) and resource (Gmail draft) and immediately scopes it negatively: 'without sending it'. It also names the sibling that does send (send_draft), so an agent can distinguish the two without opening either schema.

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

Usage Guidelines5/5

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

It states the condition for the alternative explicitly ('sending: send_draft, only after the user's yes') and defines two operating modes with their selection rules: reply via replyToMessageId, or via threadId when replyToMessageId is empty. The 'required unless replying' rule for `to` is an explicit prerequisite.

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