Skip to main content
Glama

Create fmsg draft

create_draft

Create an unsent message or reply draft in fmsg-mcp without sending, so you can prepare, review, and later send or discard it.

Instructions

Create an unsent draft: a new message, or a reply when reply_to is given (reply rules and reply-all apply). Nothing is sent until send_draft; delete_draft discards it. The draft is visible in the user's other fmsg clients. Secrets in the body and topic are redacted.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNorecipient addresses (@user@domain) or short names; for a reply, overrides reply-all
bodyYesmessage body; Markdown unless type says otherwise
typeNobody media typetext/markdown; charset=utf-8
topicNothread topic for a new message; not allowed with reply_to
no_replyNoask recipients (and their agents) not to reply
reply_toNomessage this draft replies to
importantNomark as important for recipients
attachmentsNofiles to attach now
allow_no_replyNodraft a reply even though the parent asked for no replies

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYes
hintNofor you, not the user: a better way to do this next time
nextYes
topicYes
uploadNowhere to upload more attachments; present when this server has a public URL
draft_idYes
redactedYesthe kinds of secret replaced; empty when none
resolvedNoshort names and how they resolved, when any were given; confirm with the user if an address looks wrong
warningsYesthings to tell the user, such as redacted secrets or resolved short names
parent_idYes
redactionsYessecrets replaced with placeholders in the draft
attachmentsYessorted by filename, the same order in every tool

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.1.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the description is free to add real context: the draft is visible in the user's other fmsg clients, nothing is transmitted until send_draft, and secrets in the body and topic are redacted. Those are non-obvious side effects and data-handling traits that go beyond the annotations; only the non-idempotent behavior is left to the hint.

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 dense sentences, front-loaded with the core action, then lifecycle, then the redaction caveat. No filler and no repetition of schema content.

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?

The output schema means return values need no explanation, and the description covers the draft lifecycle, cross-client visibility, and redaction. The one thing an agent might still want is confirmation of the required body versus optional addressing, but the schema carries that cleanly.

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 description coverage is 100%, so the schema already explains every parameter, including the to/reply-all interaction and the topic/reply_to conflict. The description adds sentiment about reply rules applying but no syntax or format detail beyond the schema; baseline 3 is appropriate.

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 ('Create an unsent draft') and immediately disambiguates the two modes: a new message, or a reply when reply_to is given. It is clearly separable from siblings like send_draft, reply, and send_message.

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?

Explicitly frames the draft as a staging step ('Nothing is sent until send_draft') and names delete_draft as the discard path, which gives clear context for when to reach for this tool. It stops short of an explicit when-not or a direct comparison against the sibling reply tool, which also produces replies.

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