Skip to main content
Glama
gooonzick

mail-mcp

by gooonzick

Create a draft

create_draft

Save a new email as a draft without sending, building HTML from Markdown plus plain text and returning the draft UID for later review or sending.

Instructions

Save a new message as a draft in the account's Drafts folder. Does NOT send. Builds an HTML part from markdown plus a plain-text version. Returns the draft UID for send_draft.

Input Schema

NameRequiredDescriptionDefault
ccNo
toYes
bccNo
bodyYesMarkdown. [words](https://url) becomes a link on those words in the HTML part; the text part spells the URL out.
accountYesAccount id from list_accounts
subjectYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent, closed-world behavior. The description adds real value on top: content is rendered into an HTML part from markdown plus a plain-text alternative, the artifact lands in Drafts, and the return value is a draft UID. It does not warn that repeat calls create duplicate drafts (relevant given idempotentHint=false), which is the one gap.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action and the negative constraint. Every sentence carries distinct information: what it does, what it does not do, how the body is rendered, and what it returns.

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?

For a six-parameter mutation tool with no output schema, the description covers the essentials an agent needs: side effect (draft created, nothing sent), body format handling, and the return value (draft UID). Remaining gaps are duplicate-creation behavior on repeated calls and recipient field semantics.

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

Parameters3/5

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

Schema coverage is only 33%: body and account are documented, while to, cc, bcc, and subject are bare. The description elaborates on body semantics (markdown converted to HTML with a plain-text counterpart, beyond what the schema states) but says nothing about recipient address formats or multi-recipient behavior for to/cc/bcc.

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?

States a specific verb and resource (save a new message as a draft) plus the exact destination (the account's Drafts folder). It also explicitly negates the most likely confusion ('Does NOT send') and names the sibling that follows it (send_draft), so the agent can place it in the workflow without inspecting other tools.

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?

The workflow context is clear: this prepares a message and hands off a UID to send_draft, and 'Does NOT send' rules out the obvious wrong choice. It does not explicitly contrast with reply or explain when drafting is preferable to sending directly, so alternatives are only implied.

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