Skip to main content
Glama
voidly-ai

voidmail

voidmail_send_once

Idempotent

Send one email tied to a stable operation ID to avoid duplicate sends; the same ID and exact content return the original status, while recipient or credential policy blocks prevent sending.

Instructions

Preferred send: one message bound to a stable operation ID saved by the host before this call. The Voidly API enforces the mailbox recipient policy: an unapproved recipient returns RECIPIENT_NOT_AUTHORIZED with the owner approval step, and a message containing a credential can return CONTENT_CONTAINS_CREDENTIAL. Nothing is sent in either case. Same ID and exact content returns the original status without another provider send. A different payload conflicts. Acceptance is not delivery. On uncertainty, use voidmail_send_status; never create a replacement ID automatically.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYes
htmlNo
textNo
replyToNo
subjectYes
operationIdYesStable ID generated and saved by the host before dispatch. Reuse for this exact message; never invent a replacement after uncertainty.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.1.1

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: names the enforcement error codes (RECIPIENT_NOT_AUTHORIZED, CONTENT_CONTAINS_CREDENTIAL), guarantees 'Nothing is sent in either case,' explains the replay semantics (same ID + exact content returns original status; different payload conflicts), and warns 'Acceptance is not delivery.' None of this is derivable from readOnly/idempotent/openWorld hints.

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?

Front-loaded with the preferred-use verdict, then tightly sequenced into constraints, error behavior, idempotency semantics, and the fallback tool. Dense but every sentence carries operational information; nothing is decorative.

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?

A mutation tool with no output schema and only 17% schema coverage, but the description closes the gaps that matter: failure modes, non-send guarantees, replay/conflict behavior, and the escalation path. An agent can call this correctly without further context, aside from field-format details.

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 only 17% (just operationId documented), so the description must carry the load. It adds real meaning for operationId (host-persisted, never regenerated), for `to` (recipient policy enforcement) and for content fields (credential screening), but says nothing about subject/html/text/replyTo formats or precedence.

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 action (send exactly one message) with a distinctive mechanism: 'one message bound to a stable operation ID saved by the host before this call.' The phrase 'Preferred send' implicitly positions it against the sibling voidmail_send_email, and the idempotent-by-operationId framing separates it from a plain send.

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?

Explicit guidance for the ambiguous case: 'On uncertainty, use voidmail_send_status; never create a replacement ID automatically.' It names the alternative tool and states the prohibition, and 'Preferred send' signals this is the default choice over voidmail_send_email.

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