Skip to main content
Glama

MCPEmails

Unsubscribe from chosen senders

subscriptions_cleanup
DestructiveIdempotent

Unsubscribe from senders picked from a subscriptions_scan plan. One-click senders are unsubscribed by the server; senders that unsubscribe by email get a DRAFT in Drafts that the user sends themselves (nothing is ever sent); link-only senders come back as a link for the user to open. backlog "archive" also archives what those senders already sent. Only sender_keys from the plan are accepted, and each sender is asked once. continue: true with the same plan_id finishes archiving. When the scan's card is shown, the user picks and runs the cleanup on the card; this tool is for senders the user named in chat.

Input Schema

NameRequiredDescriptionDefault
backlogNoarchive = also archive the mail these senders already sent; keep = leave it. Default keep.
plan_idYesThe plan_id from subscriptions_scan.
continueNotrue = only continue archiving for a plan that already ran.
sender_keysYesThe senders to unsubscribe from: sender_key strings from that scan, copied exactly as quoted in its text (e.g. "list:news.example.com", "from:deals@example.com"). Not names, addresses or domains. At least one, unless continue is true.

Output Schema

NameRequiredDescriptionDefault
cardNoAlways 'subscription_plan'.
stateNopending, executed, expired or error.
dashboard_urlNoAbsolute link to the dashboard.
subscriptionsNoplan_id, inbox, summary counts, senders and (once run) results and backlog.
schema_versionNoCard envelope version.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / sender_keys / description
      Previous value: -"sender_key values from that plan, for the senders to unsubscribe from."New value: +"The senders to unsubscribe from: sender_key strings from that scan, copied exactly as quoted in its text (e.g. \"list:news.example.com\", \"from:deals@example.com\"). Not names, addresses or domains. At least one, unless continue is true."
  2. Added

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the annotations by spelling out the three per-sender outcomes: server-side one-click unsubscribe, a draft the user must send themselves ('nothing is ever sent'), and a returned link. It also discloses the destructive side effect ('backlog "archive" also archives what those senders already sent') and the 'each sender is asked once' idempotency guarantee, which concretizes the destructiveHint/idempotentHint flags rather than restating them.

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

Conciseness4/5

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

The behavior (what actually happens to each sender) is front-loaded and dense with useful content, but the mid-paragraph drifts into restriction and continuation detail before returning to the chat-vs-card usage note, which would read better grouped earlier.

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?

For a destructive, multi-modal tool with four parameters and an output schema, the description covers all the uncertainty an agent would have: who sends what, what is irreversible, how to resume, and which inputs are legal. Nothing needed to call it correctly 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 coverage is 100%, so the baseline is 3, but the description adds real constraints the schema lacks: only sender_keys from the associated plan are valid, and continue=true with the same plan_id resumes archiving. The backlog archive/keep distinction is largely already in the schema, so this falls short of a 5.

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?

Names a specific verb and resource ('Unsubscribe from senders picked from a subscriptions_scan plan') and immediately ties itself to the sibling tool that produces the input, so an agent can distinguish it from subscriptions_scan 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the two entry paths: the user picks senders on the scan's card, whereas this tool is for senders named in chat. It also explains the continuation case ('continue: true with the same plan_id finishes archiving') and the constraint that only sender_keys from the plan are accepted.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.