Skip to main content
Glama
proton-bridge-mcp

proton-bridge-mcp

Remove a label

remove_label
Idempotent

Takes a label off one message or many without moving them. Preview the expunge with dry_run first, then confirm, so the right messages are affected.

Instructions

Take a label off one message (uid) or many (uids). The messages stay where they are. GATED: removing a label ends in an expunge against the label mailbox, so confirm it or preview with dry_run=true first.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "label": "<label>"
    },
    "name": "remove_label"
  }
}

Input Schema

NameRequiredDescriptionDefault
uidNoOne message. Pass this or uids.
uidsNoSeveral messages, as explicit uids. No wildcards.
labelYesThe label to take off. On Proton the Labels/ prefix is optional.
folderNoFolder the message lives in, default INBOX.
dry_runNoPreview exactly what would happen and change nothing. Needs no confirmation.
confirmedNo
uidvalidityNoUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv2.0.0
    • addedInput schema / properties / uid / description
      Added value: +"One message. Pass this or uids."
    • addedInput schema / properties / uids
      Added value: +{
      +  "description": "Several messages, as explicit uids. No wildcards.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "uid",
      -  "label"
      -]New value: +[
      +  "label"
      +]
  2. First observedv1.2.1

TDQS

A4.6/5.0
Behavior5/5

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

Discloses the non-obvious side effect the annotations do not cover: removal 'ends in an expunge against the label mailbox', which is why the call is gated and supports preview. It also states messages are not relocated, reconciling the expunge with destructiveHint=false. This is exactly the context annotations cannot convey.

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?

Three short sentences with zero filler; the scope statement, the safety-relevant 'messages stay put' fact, and the gating requirement all land in that priority order.

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?

Covers the risky part of a 7-parameter mutation tool: side effects, preview path, and confirmation gate. It leaves the mechanics of 'GATED' implicit (whether an unconfirmed call errors or silently no-ops) and says nothing about what a dry_run returns, which matters with no output schema.

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 86%, so the baseline is 3, but the description adds real value by pairing dry_run with the confirmation workflow and clarifying the confirmed parameter, which has no schema description at all. uid/uids batching is restated from the schema rather than extended.

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 ('Take a label off') and immediately disambiguates the target ('one message (uid) or many (uids)'). Combined with 'The messages stay where they are', an agent can distinguish this from apply_label, delete_label and move_to_folder without opening a schema.

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?

Gives explicit invocation guidance: it is 'GATED', so 'confirm it or preview with dry_run=true first', and clarifies the non-move semantics. It does not name sibling alternatives (e.g. delete_label to remove the label itself), so routing between label tools still requires inference.

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