Skip to main content
Glama
Considus

proton-bridge-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PROTON_MODENoOperation mode: 'readonly', 'organise', or 'full'. Removes tools not allowed in that mode.
PROTON_AUDITNoSet to '0' to disable audit logging.
PROTON_AUDIT_LOGNoPath to the audit log file. Overrides default location.
PROTON_ATTACH_DIRNoDirectory where saved attachments are written. Overrides default location.
PROTON_STATE_FILENoPath to the state file that stores polling cursors and rate counters. Overrides default location.
PROTON_ALLOWED_SENDERSNoAdditional from addresses allowed when sending, beyond your own and alias owner address.
PROTON_ALLOWED_RECIPIENTSNoAdditional recipient addresses allowed for sending, beyond those found in message headers. Useful for manually allowing addresses from untrusted content.
PROTON_TLS_INSECURE_HOSTSNoComma-separated hostnames for which TLS certificate verification is skipped.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_foldersA

List all Proton folders and labels available over the Bridge. Call this first to learn exact folder/label names for filing and tagging. Pass folder to get that folder's message counts plus UIDNEXT and UIDVALIDITY instead: UIDs are only valid within one UIDVALIDITY generation, so check it before acting on uids noted earlier.

poll_folderA

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. Pass commit to commit a checkpoint an advance=false poll returned; repeating that is harmless.

search_mailA

Search a folder. Combine any of: text, from, subject, since (DD-Mon-YYYY), unread_only, flagged_only. Returns uids + envelopes, newest first. With no filters it lists the newest messages in the folder. Set include_locations to also report which labels and folders each message carries. Set all_folders to search every mailbox at once when you do not know where something is: duplicates collapse by Message-ID and each row says where the message lives.

get_headersA

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.

read_messageA

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

list_attachmentsA

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.

read_attachmentA

Read an attachment inline. Text comes back as text: PDFs via pypdf, plus text/csv/json/ics/eml, for invoices, decks, reports. An image comes back as a viewable image, the only way to see a photo or a scan when the client cannot read local files. Other binary types must use save_attachment instead.

save_attachmentA

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.

purge_attachmentsA

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

find_threadA

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.

replyA

Reply to one message with correct threading. Replies to the Reply-To address when there is one, so alias mail stays masked. Pass all=true to reply to everyone, with your own addresses removed from Cc and duplicates dropped. Pass draft=true to save it for review, or confirmed=true to send.

create_draftA

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

update_draftA

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.

delete_draftA

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

send_draftA

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

unsubscribeA

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.

markA

Mark one message (uid) or many in one pass (uids) read/unread or star/unstar.

apply_labelA

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

remove_labelA

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.

move_to_folderA

File one message (uid) or many (uids): move it into another folder (e.g. 'Folders/', 'Archive', 'Trash'). Many at once is GATED: preview with dry_run=true, show the user, then call with confirmed=true.

create_folder_or_labelA

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.

rename_folder_or_labelA

Rename a folder or label where it stands: a label stays a label and a folder keeps its parent. INBOX and the special mailboxes (Sent, Drafts, Trash, Spam, Archive, All Mail) are refused. GATED: confirm the old and new names with the user, then call with confirmed=true.

delete_labelA

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. Pass label for one or labels for several. GATED.

sendA

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.

forwardA

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

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 25 tools

Disambiguation4/5

Most tools target a distinct resource-action pair, and the descriptions make boundaries clear (e.g., apply_label vs. remove_label vs. delete_label; read_message vs. get_headers). The few potentially confusable areas are sending pathways (send, send_draft, reply, forward) and attachment handling (list_attachments, read_attachment, save_attachment), but each has a clear stated role.

Naming Consistency4/5

Names are consistently snake_case and mostly follow verb_noun form (list_folders, read_message, create_draft, move_to_folder). A handful use single verbs (send, forward, reply, mark, unsubscribe), which is readable and conventional but slightly less uniform than the rest.

Tool Count3/5

The 25-tool surface covers a broad email client domain, but it sits at the heavy end for an MCP server and includes several operations that could plausibly be consolidated (label/folder management, attachment lifecycle). Each tool has a reason to exist, yet the set feels large rather than tightly scoped.

Completeness4/5

Coverage is strong across reading, searching, threading, labels/folders, drafts, sending, forwarding, replying, attachments, marking, and unsubscribe flows. Minor gaps remain, notably no folder deletion and no permanent message deletion or empty-trash operation, only moves to Trash.

Maintenance

ActivityActive
ResponsivenessResponsive