Skip to main content
Glama
proton-bridge-mcp

proton-bridge-mcp

Apply a label

apply_label
Idempotent

Tag one or many messages with an existing label while leaving them in place; target messages by uid and preview changes with dry_run.

Instructions

Tag one message (uid) or many (uids) with an existing label. Messages stay where they are.

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": "apply_label"
  }
}

Input Schema

NameRequiredDescriptionDefault
uidNoOne message. Pass this or uids.
uidsNoSeveral messages, as explicit uids. No wildcards.
labelYesAn existing label. On Proton the Labels/ prefix is optional; elsewhere this is an ordinary mailbox name.
folderNoSource folder, default INBOX.
dry_runNoPreview exactly what would happen and change nothing. Needs no confirmation.
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

A3.6/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, and the sentence 'Messages stay where they are' usefully confirms that tagging is additive and does not relocate the message. Beyond that it says nothing about failure behavior (e.g. what happens if the label does not exist), authorization needs, or the dry_run preview path that the schema exposes.

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?

Two short sentences, front-loaded with the action and its scope. Every clause carries information, with no repetition of the title or padding.

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 six-parameter mutation tool with fully documented schema and no output schema, the description covers the essential semantics (targeting, non-relocation, existing-label prerequisite). It stops short of addressing the preconditions or preview workflow that would make it fully self-sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so uid/uids/folder/dry_run/uidvalidity are already fully documented in structured fields. The description merely restates the uid-vs-uids choice with no added format, exclusivity rule, or example, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (tag) and resource (message) plus the single-vs-many targeting, which cleanly separates it from siblings like remove_label and move_to_folder. It does not name those siblings explicitly, so differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The phrase 'existing label' implies the prerequisite that label creation happens elsewhere (create_folder_or_label), and 'Messages stay where they are' implicitly contrasts with move_to_folder. However, no explicit when-to-use/when-not or named alternative is given, so the guidance is implied only.

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