Skip to main content
Glama

send_email

Destructive

Send email messages through a connected Gmail or Outlook mailbox. If no mailbox is linked, provides an authentication link to connect and retry.

Instructions

Send an email through the connected Unipile mailbox (Gmail/Outlook).

This is the only supported way to send email. Never use Mail.app, osascript,
mailto: handlers, or a local SMTP client.

If no mailbox is connected, the result includes a hosted-auth link.
Have the user open it, then retry. Or call account(action='connect_email')
first.

Args:
    to: Recipient email address.
    subject: Subject line.
    body: Body text (HTML is fine).
    to_name: Optional display name for the recipient.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYes
bodyYes
subjectYes
to_nameNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.10.375

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false; the description does not contradict these. It adds genuine behavioral context beyond annotations by disclosing the hosted-auth-link failure mode and the retry/account-setup follow-up, which an agent needs to handle the no-mailbox case gracefully.

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?

The description is front-loaded with the core purpose, followed by hard usage constraints, the auth-failure flow, and a compact Args block. Every sentence earns its place—there is no filler or re-statement of the schema titles.

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 4-parameter mutation tool with an output schema and full annotations, the description is nearly complete: it covers purpose, exclusions, auth failure, and parameters. Minor omissions are details like success-path behavior and rate limits, but the output schema already carries return-value documentation, so nothing critical is missing.

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 description coverage is 0%, so the description's Args block carries the full parameter-documentation burden. It explains all four parameters and adds meaningful notes beyond the bare titles: 'HTML is fine' for body and 'Optional' for to_name. Coverage is complete, though the individual descriptions are terse.

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?

The description opens with a specific verb and resource: 'Send an email through the connected Unipile mailbox (Gmail/Outlook).' It also distinguishes itself from siblings by declaring 'This is the only supported way to send email,' separating it from tools like send_message and generate_and_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 when-not guidance is present: 'Never use Mail.app, osascript, mailto: handlers, or a local SMTP client.' It also provides a concrete alternative path for the unauthenticated case ('call account(action="connect_email") first') and instructs the agent to have the user open the hosted-auth link and retry.

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