Skip to main content
Glama

draft

Compose and edit unsent emails in a mailbox folder, adding recipients, attachments, templates, and signatures without sending.

Instructions

Create or edit a draft in a Drafts folder. NOTHING IS SENT (use send_email for that).

  • New: to, subject, body (markdown). reply_to= answers the sender; reply_all= keeps everyone; forward= forwards it with its attachments. edit= changes an existing draft (fields you leave out stay as they are).

  • attach_from: attachment IDs from other emails (e.g. 'INBOX#1234#0') to attach.

  • New files (photos, PDFs, documents, audio, video, zip; programs are always refused): attach_path: file paths on the user's computer, e.g. ["~/Desktop/invoice.pdf"] (only when this server runs on that computer). attach_content: small files you wrote yourself, [{"name": "notes.txt", "text": "..."}] or [{"name": "chart.png", "base64": "..."}], up to 2 MB each. attach_upload: files the user put on the upload page, by file name (["Beach-day.jpg"]), ["latest"] for the newest ("the file I just uploaded"), or a code.

  • Some files are suspect (macros, scripts, archives that can't be checked): the draft is then NOT saved and you get the reasons. Tell the user, and only if they agree, call again with allow_suspect=true.

  • photos="hd" (default) sends photos as they are; photos="smaller" resizes new photos to at most 2560 px at high quality (use it when the user asks, or after they agree when files are over the size limit).

  • iPhone HEIC photos: the draft is NOT saved until the user chose: heic="jpg" (convert, location removed) or heic="keep". Ask them first.

  • template: name or number from templates; placeholder: ["name=value", ...] for its manual fields.

  • If a signature is set up (accounts says so), it is added automatically under the body: end the body with a short closing line (e.g. "Best,") and don't write the sender's name yourself. no_signature=true skips it.

  • delete= moves a draft to Trash (must be the only argument).

  • account: the mailbox address or name to write from (see accounts). Default: replies and forwards use the mailbox the email is in (or the first mailbox that may draft); new emails use the first mailbox.

  • mode="signatures" shows each mailbox's signature instead of drafting. mode="files" lists the files waiting on the upload page, so you can confirm with the user which one to attach.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ccNoCopy addresses.
toNoRecipient addresses.
bccNoHidden copy addresses.
bodyNoThe email text, in markdown. End it with a short closing line; the signature is added for you.
editNoThe ID of an existing draft to change. Fields you leave out stay as they are.
heicNoFor iPhone HEIC photos, after asking the user: 'jpg' converts them (location removed), 'keep' sends them as they are.
modeNo'signatures' shows each mailbox's signature, 'files' lists files waiting on the upload page. Nothing is drafted then.
deleteNoThe ID of a draft to move to Trash. Must be the only argument.
photosNo'hd' sends photos as they are; 'smaller' resizes new photos to at most 2560 px.hd
accountNoThe mailbox address or name to write from. Empty: replies and forwards use the email's mailbox, new emails the first mailbox.
forwardNoThe ID of an email to forward, with its attachments.
subjectNoThe subject line.
reply_toNoThe ID of an email to answer: replies to its sender.
templateNoA template's name or number, from templates.
reply_allNoThe ID of an email to answer: replies to everyone on it.
attach_fromNoAttachment IDs from other emails to attach, like 'INBOX#1234#0'.
attach_pathNoFile paths on the user's computer to attach, like ['~/Desktop/invoice.pdf']. Only when this server runs on that computer.
placeholderNoValues for the template's manual fields, like ['name=Sam'].
no_signatureNotrue: don't add the mailbox's signature.
allow_suspectNotrue: attach suspect files anyway. Only after the user agreed, once told the reasons.
attach_uploadNoFiles the user put on the upload page, by file name, ['latest'] for the newest, or a code.
attach_contentNoSmall files you wrote yourself, up to 2 MB each: [{'name': 'notes.txt', 'text': '...'}] or [{'name': 'chart.png', 'base64': '...'}].

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changed
    • addedInput schema / properties / account / description
      Added value: +"The mailbox address or name to write from. Empty: replies and forwards use the email's mailbox, new emails the first mailbox."
    • addedInput schema / properties / allow_suspect / description
      Added value: +"true: attach suspect files anyway. Only after the user agreed, once told the reasons."
    • addedInput schema / properties / attach_content / description
      Added value: +"Small files you wrote yourself, up to 2 MB each: [{'name': 'notes.txt', 'text': '...'}] or [{'name': 'chart.png', 'base64': '...'}]."
    • addedInput schema / properties / attach_from / description
      Added value: +"Attachment IDs from other emails to attach, like 'INBOX#1234#0'."
    • addedInput schema / properties / attach_path / description
      Added value: +"File paths on the user's computer to attach, like ['~/Desktop/invoice.pdf']. Only when this server runs on that computer."
    • addedInput schema / properties / attach_upload / description
      Added value: +"Files the user put on the upload page, by file name, ['latest'] for the newest, or a code."
    • addedInput schema / properties / bcc / description
      Added value: +"Hidden copy addresses."
    • addedInput schema / properties / body / description
      Added value: +"The email text, in markdown. End it with a short closing line; the signature is added for you."
    • addedInput schema / properties / cc / description
      Added value: +"Copy addresses."
    • addedInput schema / properties / delete / description
      Added value: +"The ID of a draft to move to Trash. Must be the only argument."
    • addedInput schema / properties / edit / description
      Added value: +"The ID of an existing draft to change. Fields you leave out stay as they are."
    • addedInput schema / properties / forward / description
      Added value: +"The ID of an email to forward, with its attachments."
    • addedInput schema / properties / heic / description
      Added value: +"For iPhone HEIC photos, after asking the user: 'jpg' converts them (location removed), 'keep' sends them as they are."
    • addedInput schema / properties / mode / description
      Added value: +"'signatures' shows each mailbox's signature, 'files' lists files waiting on the upload page. Nothing is drafted then."
    • addedInput schema / properties / no_signature / description
      Added value: +"true: don't add the mailbox's signature."
    • addedInput schema / properties / photos / description
      Added value: +"'hd' sends photos as they are; 'smaller' resizes new photos to at most 2560 px."
    • addedInput schema / properties / placeholder / description
      Added value: +"Values for the template's manual fields, like ['name=Sam']."
    • addedInput schema / properties / reply_all / description
      Added value: +"The ID of an email to answer: replies to everyone on it."
    • addedInput schema / properties / reply_to / description
      Added value: +"The ID of an email to answer: replies to its sender."
    • addedInput schema / properties / subject / description
      Added value: +"The subject line."
    • addedInput schema / properties / template / description
      Added value: +"A template's name or number, from templates."
    • addedInput schema / properties / to / description
      Added value: +"Recipient addresses."
  2. First observedv0.19.1

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare the non-read-only, non-destructive, non-open-world profile, and the description adds substantial context beyond them: drafts are silently NOT saved when suspect files or HEIC photos are involved, programs are always refused, signatures are auto-appended, attachments are capped at 2 MB each, and delete moves to Trash. This is unusually rich behavioral disclosure for a mutation tool.

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?

It is long, but 22 parameters with three attachment channels and three sub-modes genuinely justify the length, and the safety-critical 'NOTHING IS SENT' constraint is front-loaded. Bullets are organized by task rather than alphabetically, though a few lines restate schema text almost verbatim.

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, so return-value explanation is unnecessary, and every behavioral branch an agent needs – delete, mode='signatures'/'files', attachment sourcing, signature handling, HEIC and suspect-file refusals – is covered. Nothing required to call this 22-parameter tool correctly 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real value the schema does not: it groups parameters into the New-email flow (to/subject/body), explains the reply_to vs reply_all vs forward ID semantics, and notes that omitted fields on edit stay unchanged. It stops short of documenting cc/bcc alongside the flow, so it is good rather than exhaustive.

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+resource ('Create or edit a draft in a Drafts folder') and immediately differentiates the tool from its closest sibling by stating 'NOTHING IS SENT (use send_email for that).' An agent can tell this apart from send_email and schedule_send without opening any 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?

Explicitly routes to alternatives ('use send_email for that') and gives conditional rules for nearly every path: delete must be the only argument, photos='smaller' only when asked or after agreement, HEIC drafts require first asking the user, allow_suspect only after telling the user the reasons. When-to-use and when-not-to-use are both spelled out.

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