Skip to main content
Glama
outlook-mcp

outlook-mcp

by ajs117

unsubscribe_many

Unsubscribe from many bulk email senders in a single batched call, deduplicating by unsubscribe target instead of sender so no newsletter stream is missed. Flags senders needing a browser visit.

Instructions

Unsubscribe from many bulk senders in one call.

Deduplicates on the unsubscribe target, never on the sender: LinkedIn job alerts all arrive from one address but carry a different savedSearchId each, so skipping by sender leaves most streams subscribed while reporting success. Two messages for the same stream still carry different per-message tokens and so both get posted — a wasted request is cheaper than a missed unsubscribe.

Same per-message semantics as unsubscribe(), but the header fetch is batched and the whole sweep is one tool call instead of one per sender.

Returns {attempted, unsubscribed, needs_browser, drafted, failed, results: [...]}. needs_browser collects the senders whose only working route is a URL a human must open — including one-click endpoints that rejected the POST — so nothing fails silently.

Input Schema

NameRequiredDescriptionDefault
executeNo
message_idsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses dedup keying on target rather than sender, the deliberate tradeoff of duplicate requests over missed unsubscribes, batching of the header fetch, and the needs_browser bucket so 'nothing fails silently'. It omits any mention of the execute flag's default-false/dry-run behavior and required permissions, which are the most consequential behaviors for a mutation tool.

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?

Purpose and the sibling comparison are front-loaded, and the dedup rationale, while long, explains behavior an agent may need to reason about. Some of the savedSearchId narrative is more justification than instruction and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The return shape is spelled out well, which is valuable with no output schema, and the batching/dedup model is covered. But for a two-param mutation tool with no annotations, leaving the execute dry-run flag completely unexplained is a material completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and neither parameter is described. message_ids is only indirectly implied by talk of per-message tokens and savedSearchId, and the execute boolean (default false) is never mentioned at all — the agent cannot tell from the definition whether the call actually unsubscribes or only previews.

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, resource and scale ('Unsubscribe from many bulk senders in one call'), and explicitly contrasts itself with the sibling unsubscribe() as the batched variant. An agent can distinguish it from unsubscribe and from bulk_* tools immediately.

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?

Names the alternative ('Same per-message semantics as unsubscribe(), but ... one tool call instead of one per sender'), which tells the agent to prefer this for multi-sender sweeps. It never states the inverse condition (when to use the single-message tool, or that a single ID should go to unsubscribe()), so the guidance is clear but not fully two-sided.

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