Skip to main content
Glama

Save a new draft

create_draft

Save a new unsent Proton Mail draft or reply without sending it, then return the draft Message-ID for later use. Use it to prepare messages and attachments for review.

Instructions

Save a new unsent draft in Drafts and return its Message-ID; this never sends. If compose_reply is listed and the user wants to reply or compose, call compose_reply first: this is the no-view path.

If compose_reply is listed, call this after compose_reply's fields were shown and the user agreed, or let the composer view save; otherwise call it directly. It saves a reply (in_reply_to, the original's Message-ID, also sets References) or a new message; use forward_message to forward mail. It needs no preview. Each call appends one new draft and never edits or deletes another.

Attach files from the allowed folder (attachments, paths relative to PROTON_MCP_ATTACHMENTS_DIR) or copy them from a draft or message (attachments_from, with attachment_indexes from list_attachments). One draft holds at most 20 attachments and 7 MiB of them, and stays within the 10 MiB send limit. from_address must be one list_from_addresses allows.

Returns the draft's Message-ID, the draft_id other tools take. Refuses an absolute or missing file, too many or too large attachments, or a From address not allowed.

Input Schema

NameRequiredDescriptionDefault
ccNoAn address, or a list of addresses.
toYesAn address such as a@example.test, or a list of addresses.
bodyYesThe message text, as plain text.
subjectYesThe subject line.
attachmentsNoFile paths relative to the allowed folder (PROTON_MCP_ATTACHMENTS_DIR); an absolute path refuses. Nothing else on this computer can be attached.
in_reply_toNoMessage-ID being replied to; sets In-Reply-To and References.
from_addressNoUse this From address instead of the default: one that list_from_addresses allows, exactly as listed.
attachments_fromNoMessage-ID of a saved draft or a message to copy attachments from.
attachment_indexesNoWhich of its attachments to copy, as list_attachments numbers them.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare non-read-only, non-destructive, non-idempotent; the description earns its keep by explaining the consequence — "Each call appends one new draft and never edits or deletes another" — which is exactly the append-duplication behavior idempotentHint=false implies but doesn't spell out. It also discloses hard quotas (20 attachments, 7 MiB, 10 MiB send limit), the From-address allowlist constraint, and the specific refusal conditions.

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

Conciseness3/5

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

The purpose and the never-sends guarantee are front-loaded correctly, but the compose_reply routing is split across two paragraphs that restate the same precondition, and the attachment limits are stated twice (inline and again in the refusal list). Dense and informative, but it could be trimmed by roughly a third without losing guidance.

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?

With annotations, a full output schema, and 100% parameter documentation already available, the description supplies exactly the missing layer: the reply-vs-new-vs-forward decision, attachment sourcing and limits, and the failure modes. Nothing an agent needs to invoke it correctly is absent.

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 already 100%, so the baseline is 3; the description goes beyond it by explaining cross-field semantics the schema states only per-field — in_reply_to additionally sets References, and attachments_from pairs with attachment_indexes as numbered by list_attachments. It stops short of explaining the cc/array normalization or the interaction of attachments with attachments_from in one call.

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?

"Save a new unsent draft in Drafts and return its Message-ID; this never sends" states a specific verb, resource, return value, and a critical scope boundary in one sentence. It is unambiguously distinct from compose_reply and forward_message, both of which it names.

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 gives explicit routing logic: if compose_reply is listed and the user wants to reply or compose, call compose_reply first; then call this after the composer fields were shown and agreed, or save from the composer view; otherwise call directly. It also names forward_message for the forwarding case, so the when/when-not/alternative triad is fully covered.

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