propose_email
Prepare a plain-text email for human approval. Requires a human-issued mail:draft key. Never sends. Reuse clientKey and content after uncertain responses.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| clientKey | Yes |
Prepare a plain-text email for human approval. Requires a human-issued mail:draft key. Never sends. Reuse clientKey and content after uncertain responses.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| clientKey | Yes |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does real work: it discloses the auth requirement, guarantees no send occurs, and gives idempotency behavior for clientKey on ambiguous responses. It omits what the call actually returns (a pending proposal), whether the draft can be updated afterward via update_proposal, and any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each carrying a distinct fact, with the core purpose front-loaded before the auth and retry details. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the tool has a nested message object whose subfields are undocumented in both description and schema. The description covers safety, auth, and idempotency well but leaves the agent without guidance on reply/forward mode semantics or what a successful proposal looks like before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the top-level parameters, so the description only partly compensates by explaining clientKey's reuse semantics for retries. The nested message fields (mode, inReplyTo, references, to/cc/bcc/from) are left entirely to the schema, and "plain-text" is the only added constraint, though the schema already notes HTML is unsupported.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-plus-resource ("Prepare a plain-text email") and immediately scopes the outcome as "for human approval." The clause "Never sends" explicitly separates it from the send_email sibling, so an agent can pick between them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete precondition ("Requires a human-issued mail:draft key") and a retry rule ("Reuse clientKey and content after uncertain responses"), which gives clear when-to-use context. It stops short of naming send_email or request_sender_review as the follow-on path once a human approves, so the routing guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.