Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Proton Bridge MCP

MCPB · PROTON-BRIDGE-MCP-1.2.2.MCPB · SCANNED AUG 22

Read, organise and carefully-gated send for Proton Mail, without your mail leaving this machine.

0 this week 43 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security13
  • Malware scan not yet available for this package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
  • No install/post-install scripts declared.Pass
  • Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency23
Schema Quality & AI Usability77
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4116 tokens (~121/item across 34 items; 34 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
  • Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage89
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 66% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

mcpb · proton-bridge-mcp-1.2.2.mcpb

Download bundle
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Aug 26 −2
    • Source repository: pass → fail security
    • Stability: unverified → 0.23 functional
  • 11 Aug 26 43

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 22 Aug 2026 · Analysed mcpb/https://github.com/Considus/proton-bridge-mcp/releases/download/v1.2.2/proton-bridge-mcp-1.2.2.mcpb

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem mcpb
MCP tools · 34 exposed · ~4,116 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
ack_folder ~48

Commit a checkpoint returned by poll_folder with advance=false. Repeating it is harmless.

NameTypeReqDescription
checkpointstringyesExactly as poll_folder reported it.
folderstringDefault INBOX.

No output schema declared.

No examples provided.

apply_label ~123

Tag a message with an existing label. The message stays where it is.

NameTypeReqDescription
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringSource folder, default INBOX.
labelstringyesAn existing label. On Proton the Labels/ prefix is optional; elsewhere this is an ordinary mailbox name.
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

bulk_apply_label ~120

Apply one existing label to many messages. Messages stay where they are.

NameTypeReqDescription
dry_runbooleanPreview which uids would be affected, change nothing.
folderstringFolder the uids belong to. Default INBOX.
labelstringyesAn existing label. On Proton the Labels/ prefix is optional; elsewhere this is an ordinary mailbox name.
uidsarrayyesExplicit message uids. No wildcards.
uidvaliditystringUIDVALIDITY for that folder; refuses on mismatch.

No output schema declared.

No examples provided.

bulk_delete_labels ~77

Delete several labels in one pass. Messages keep their place and lose the tags. Labels only, GATED.

NameTypeReqDescription
confirmedboolean
dry_runbooleanPreview each one, including how many messages carry it. Changes nothing.
labelsarrayyesLabel names. On Proton the Labels/ prefix is optional.

No output schema declared.

No examples provided.

bulk_mark ~105

Mark many messages read/unread/starred in one pass. Far cheaper than one call per message.

NameTypeReqDescription
actionstringyes
dry_runbooleanPreview which uids would be affected, change nothing.
folderstringFolder the uids belong to. Default INBOX.
uidsarrayyesExplicit message uids. No wildcards.
uidvaliditystringUIDVALIDITY for that folder; refuses on mismatch.

No output schema declared.

No examples provided.

bulk_move ~120

File or Trash many messages at once. GATED: preview with dry_run=true, show the user, then call with confirmed=true.

NameTypeReqDescription
confirmedbooleanyes
dry_runbooleanPreview which uids would be affected, change nothing.
folderstringFolder the uids belong to. Default INBOX.
to_folderstringyes
uidsarrayyesExplicit message uids. No wildcards.
uidvaliditystringUIDVALIDITY for that folder; refuses on mismatch.

No output schema declared.

No examples provided.

bulk_remove_label ~130

Take one label off many messages at once. The messages stay where they are. GATED, like remove_label.

NameTypeReqDescription
confirmedboolean
dry_runbooleanPreview which uids would be affected, change nothing.
folderstringFolder the uids belong to. Default INBOX.
labelstringyesThe label to take off. On Proton the Labels/ prefix is optional.
uidsarrayyesExplicit message uids. No wildcards.
uidvaliditystringUIDVALIDITY for that folder; refuses on mismatch.

No output schema declared.

No examples provided.

create_draft ~120

Write a draft into the Proton Drafts folder. Never sends. For a reply, pass in_reply_to (the original Message-ID).

NameTypeReqDescription
attacharrayFiles to attach, by path. Only from the allowed source directories.
bodystringyes
ccstring
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
in_reply_tostring
referencesstring
subjectstringyes
tostringyes

No output schema declared.

No examples provided.

create_folder_or_label ~98

Create a new label or folder. GATED: it changes your folder and label structure, so confirm the exact name and type with the user, then call with confirmed=true.

NameTypeReqDescription
confirmedbooleanyes
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
kindstringyes
namestringyesName only, no 'Labels/' or 'Folders/' prefix.

No output schema declared.

No examples provided.

delete_draft ~89

Move a draft to Trash. GATED. Nothing here deletes permanently.

NameTypeReqDescription
confirmedboolean
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringDefaults to your Drafts folder.
uidstringyes
uidvaliditystringUIDVALIDITY of the folder; refuses on mismatch.

No output schema declared.

No examples provided.

delete_label ~104

Delete a label outright. Every message that carried it stays exactly where it is and simply loses the tag — no mail is deleted. Labels only; folders are where messages live and are not deletable here. GATED.

NameTypeReqDescription
confirmedboolean
dry_runbooleanPreview it, including how many messages carry the label. Changes nothing, needs no confirmation.
labelstringyesThe label to delete. On Proton the Labels/ prefix is optional.

No output schema declared.

No examples provided.

find_thread ~112

Pull every message of a conversation from All Mail, showing which ones carry documents. ESSENTIAL: Proton's UI groups conversations but IMAP exposes single messages, so an inbox 'Re:' can look attachment-free while the thread's original holds the PDFs. Run this before concluding what a thread needs.

NameTypeReqDescription
folderstringFolder of that uid, default INBOX.
subjectstringAlternatively match on a subject directly.
uidstringA message in the thread (its subject is used).

No output schema declared.

No examples provided.

folder_status ~54

Message counts plus UIDNEXT and UIDVALIDITY for a folder. UIDs are only valid within one UIDVALIDITY generation, so check this before acting on uids noted earlier.

NameTypeReqDescription
folderstringDefault INBOX.

No output schema declared.

No examples provided.

forward ~156

Forward an existing message to someone on demand. GATED like send: confirm recipient with the user, then call with confirmed=true.

NameTypeReqDescription
confirmedbooleanyes
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringDefault INBOX.
from_addressstringOverride the From address (use your alias-owner address when forwarding via an alias reverse-address).
notestringOptional note added above the forwarded content.
tostringyes
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

get_headers ~85

Headers plus SPF/DKIM/DMARC verdicts and Proton metadata, for judging whether a message is what it claims to be. Pass raw=true for the unparsed header block.

NameTypeReqDescription
folderstringDefault INBOX.
rawbooleanReturn the full raw header block instead.
uidstringyes
uidvaliditystring

No output schema declared.

No examples provided.

list_attachments ~119

List a message's attachments, separating real DOCUMENTS from inline cid: images and PGP keys (hidden by default). Call before claiming a message has no attachment — read_message shows body text only and never reveals files.

NameTypeReqDescription
folderstringDefault INBOX.
include_inlinebooleanAlso list inline images / PGP keys.
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

list_folders ~35

List all Proton folders and labels available over the Bridge. Call this first to learn exact folder/label names for filing and tagging.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

mark ~95

Mark a message read/unread or star/unstar.

NameTypeReqDescription
actionstringyes
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringDefault INBOX.
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

move_to_folder ~114

File a message: move it into another folder (e.g. 'Folders/<name>', 'Archive', 'Trash').

NameTypeReqDescription
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringSource folder, default INBOX.
to_folderstringyes
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

poll_folder ~98

Messages that have arrived since the last poll. The very first poll emits nothing and just records where the mailbox ends, so turning this on does not replay the backlog. Marks nothing as read.

NameTypeReqDescription
advancebooleanDefault true. Set false to look without committing, then confirm with ack_folder.
folderstringDefault INBOX.
limitintegerMost per call, 1 to 100 (default 20).

No output schema declared.

No examples provided.

purge_attachments ~49

Immediately delete all ephemeral saved attachments. Call after reading a saved file so nothing lingers on disk.

NameTypeReqDescription
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.

No output schema declared.

No examples provided.

read_attachment ~118

Extract an attachment's TEXT inline — PDFs via pypdf, plus text/csv/json/ics/eml. Use for invoices, decks, reports. Binary/image types must use save_attachment instead.

NameTypeReqDescription
filenamestringWhich attachment (partial match OK). Optional if there is only one.
folderstringDefault INBOX.
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

read_message ~74

Read the full headers and body text of one message by uid within a folder.

NameTypeReqDescription
folderstringDefault INBOX.
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

remove_label ~154

Take a label off a message. The message itself stays where it is. GATED: removing a label ends in an expunge against the label mailbox, so confirm it or preview with dry_run=true first.

NameTypeReqDescription
confirmedboolean
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringFolder the message lives in, default INBOX.
labelstringyesThe label to take off. On Proton the Labels/ prefix is optional.
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

reply ~245

Reply to one message with correct threading. Replies to the Reply-To address when there is one, so alias mail stays masked. Pass draft=true to save it for review, or confirmed=true to send.

NameTypeReqDescription
attacharrayFiles to attach, by path. Only from the allowed source directories.
bodystringyesYour reply text. The original is quoted beneath unless quote=false.
confirmedbooleanRequired to actually send. Not needed when draft=true.
draftbooleanSave to Drafts instead of sending. Needs no confirmation because nothing goes out.
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringFolder holding the message. Default INBOX.
from_addressstringMust be on the sender allowlist. Left unset, alias mail automatically uses the alias-owner address.
quotebooleanQuote the original beneath your reply. Default true.
subjectstringOverride the auto 'Re: ...' subject.
uidstringyes
uidvaliditystringUIDVALIDITY for that folder; refuses on mismatch.

No output schema declared.

No examples provided.

reply_all ~233

Reply to everyone on a message, with your own addresses removed from Cc and duplicates dropped. Same draft and confirmation rules as reply.

NameTypeReqDescription
attacharrayFiles to attach, by path. Only from the allowed source directories.
bodystringyesYour reply text. The original is quoted beneath unless quote=false.
confirmedbooleanRequired to actually send. Not needed when draft=true.
draftbooleanSave to Drafts instead of sending. Needs no confirmation because nothing goes out.
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringFolder holding the message. Default INBOX.
from_addressstringMust be on the sender allowlist. Left unset, alias mail automatically uses the alias-owner address.
quotebooleanQuote the original beneath your reply. Default true.
subjectstringOverride the auto 'Re: ...' subject.
uidstringyes
uidvaliditystringUIDVALIDITY for that folder; refuses on mismatch.

No output schema declared.

No examples provided.

save_attachment ~194

Write attachment(s) to disk and return the path(s). Use for images, scanned PDFs, or anything not text-extractable. EPHEMERAL by default — files self-delete after the TTL.

NameTypeReqDescription
dest_dirstringSub-path under the attachments dir. Writes outside it are refused.
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
filenamestringPartial match; omit to save all documents.
folderstringDefault INBOX.
include_inlineboolean
persistbooleanKeep the file permanently. Default false = auto-deleted after the TTL so nothing lingers for the user to open by accident.
uidstringyes
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.

No output schema declared.

No examples provided.

search_all_mail ~122

Search every mailbox at once and collapse duplicates by Message-ID, reporting where each message lives. Use when you do not know which folder something is in.

NameTypeReqDescription
beforestringDD-Mon-YYYY. Combine with since for a date range.
flagged_onlyboolean
fromstring
limitintegerMost recent N (default 25).
sincestringDD-Mon-YYYY.
subjectstring
textstring
unread_onlyboolean

No output schema declared.

No examples provided.

search_mail ~252

Search a folder. Combine any of: text, from, subject, since (DD-Mon-YYYY), unread_only, flagged_only. Returns uids + envelopes, newest first. Set include_locations to also report which labels and folders each message carries.

NameTypeReqDescription
beforestringDD-Mon-YYYY. Combine with since for a date range.
flagged_onlyboolean
folderstringFolder to search, e.g. INBOX, 'All Mail', 'Folders/<name>'. Default INBOX.
fromstring
include_locationsbooleanReport every other mailbox each message appears in, so you can tell what it is already labelled or filed as without a second search. Costs one search per mailbox.
limitintegerMax results (default 15).
sincestringDD-Mon-YYYY, e.g. 01-Jul-2026
subjectstring
textstring
uidvaliditystringUIDVALIDITY reported alongside the uid. Pass it back so a mailbox resync cannot make this act on the wrong message.
unread_onlyboolean

No output schema declared.

No examples provided.

send ~198

Send a new email. GATED: the agent must show the user the exact To/Subject/Body, get an explicit yes, then call with confirmed=true. Never call unattended.

NameTypeReqDescription
attacharrayFiles to attach, by path. Only from the allowed source directories.
bodystringyes
ccstring
confirmedbooleanyesMust be true; set only after the user approves this exact message.
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
from_addressstringOverride the From address. For replies to a SimpleLogin alias, set this to your alias-owner address (PROTON_ALIAS_FROM) and send 'to' the reverse-alias from the message's Reply-To header.
in_reply_tostring
referencesstring
subjectstringyes
tostringyes

No output schema declared.

No examples provided.

send_draft ~101

Send a saved draft as written, then move it to Trash. GATED. Sender and recipient checks run again at send time.

NameTypeReqDescription
confirmedboolean
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringDefaults to your Drafts folder.
uidstringyes
uidvaliditystringUIDVALIDITY of the folder; refuses on mismatch.

No output schema declared.

No examples provided.

unsubscribe ~112

Report how to unsubscribe from a message using its List-Unsubscribe header, and optionally send the email form. Reports only unless send=true. Web links are never fetched for you.

NameTypeReqDescription
confirmedboolean
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringDefault INBOX.
sendbooleanActually send the mailto: unsubscribe. Requires confirmed.
uidstringyes
uidvaliditystring

No output schema declared.

No examples provided.

update_draft ~169

Replace a draft's contents. Threading headers are carried over, the new version is saved before the old one is binned. Omit a field to keep what the draft already had.

NameTypeReqDescription
attacharrayFiles to attach, by path. Only from the allowed source directories.
bodystring
ccstring
dry_runbooleanPreview exactly what would happen and change nothing. Needs no confirmation.
folderstringDefaults to your Drafts folder.
from_addressstringMust be on the sender allowlist.
subjectstring
tostring
uidstringyes
uidvaliditystringUIDVALIDITY of the folder; refuses on mismatch.

No output schema declared.

No examples provided.

view_attachment ~93

Look at an image attachment. Returns it as a viewable image, which is the only way to see a photo or a scan when the client cannot read local files. Images only, use read_attachment for text and PDFs.

NameTypeReqDescription
filenamestringWhich image; partial match is fine.
folderstringDefault INBOX.
uidstringyes
uidvaliditystring

No output schema declared.

No examples provided.