Skip to main content
Glama
ronamosa

ProtonMail MCP Server

by ronamosa

ProtonMail MCP Server

Email management for AI agents through ProtonMail and Proton Bridge

CI npm MCP SDK TypeScript License: MIT Node.js

Send, read, search, and organize emails from Claude Code, Claude Desktop, Cursor, or any MCP-compatible client.

Overview


Quick start

npx @ronamosa/protonmail-pro-mcp

Or install globally:

npm install -g @ronamosa/protonmail-pro-mcp
protonmail-pro-mcp

Install from source

git clone https://github.com/ronamosa/protonmail-pro-mcp.git
cd protonmail-pro-mcp
npm install
npm link

Verify the install:

which protonmail-pro-mcp

Prerequisites -- Node.js >= 18 and Proton Bridge running locally.

Related MCP server: Proton Mail MCP Server

Configuration

cp .env.example .env   # then fill in your credentials

Variable

Required

Default

Description

PROTONMAIL_USERNAME

Yes

--

Your ProtonMail email address

PROTONMAIL_PASSWORD

Yes

--

Proton Bridge password (not your login password)

PROTONMAIL_SMTP_HOST

smtp.protonmail.ch

SMTP server host

PROTONMAIL_SMTP_PORT

587

SMTP server port

PROTONMAIL_IMAP_HOST

127.0.0.1

IMAP host (Proton Bridge)

PROTONMAIL_IMAP_PORT

1143

IMAP port (Proton Bridge)

PROTONMAIL_IMAP_TLS

false

Enable TLS for IMAP

PORT

3000

HTTP transport port

DEBUG

false

Enable debug logging

Security -- PROTONMAIL_PASSWORD is the bridge-generated password, not your ProtonMail login. Never commit .env files.

Local development (Cursor)

To test this repo's built output instead of the published npm package:

npm run build
cp .cursor/mcp.json.example .cursor/mcp.json   # add your Bridge credentials

Restart Cursor MCP (Settings → MCP → reload). The local server runs node dist/index.js from this workspace.

Manual attachment test (Bridge required)

Sends a self-addressed email with two attachments named dupe.txt, then verifies ambiguous lookup and index-based retrieval:

cp .env.example .env          # if you have not already
npm run build
npm run test:attachments:manual

The script leaves the test email in INBOX so you can also exercise get_email_by_id and get_attachment from Cursor.

Usage

Add to ~/.claude.json under mcpServers, or run claude mcp add:

{
  "mcpServers": {
    "protonmail": {
      "type": "stdio",
      "command": "npx",
      "args": ["@ronamosa/protonmail-pro-mcp"],
      "env": {
        "PROTONMAIL_USERNAME": "you@protonmail.com",
        "PROTONMAIL_PASSWORD": "your-bridge-password"
      }
    }
  }
}

Add to ~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "protonmail": {
      "command": "npx",
      "args": ["@ronamosa/protonmail-pro-mcp"],
      "env": {
        "PROTONMAIL_USERNAME": "you@protonmail.com",
        "PROTONMAIL_PASSWORD": "your-bridge-password"
      }
    }
  }
}

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "protonmail": {
      "command": "npx",
      "args": ["@ronamosa/protonmail-pro-mcp"],
      "env": {
        "PROTONMAIL_USERNAME": "you@protonmail.com",
        "PROTONMAIL_PASSWORD": "your-bridge-password"
      }
    }
  }
}
protonmail-pro-mcp --transport http --port 3000

Endpoints: POST /mcp, GET /mcp, DELETE /mcp (Streamable HTTP). Health check at GET /health.

Tools

Tool

Description

Send

send_email

Send with to/cc/bcc, HTML, priority, reply-to, attachments

send_test_email

Quick test email to verify SMTP

Read

get_emails

Fetch from a folder with pagination

get_email_by_id

Full email with body, headers, and attachment metadata (includes index)

get_attachment

Download an attachment by emailId and filename; pass index when filenames duplicate

search_emails

Filter by from, to, subject, date, flags, attachments

Drafts

create_draft

Create a new draft in the Drafts folder

update_draft

Replace an existing draft with new content

delete_draft

Delete a draft

send_draft

Send a draft via SMTP and remove it from Drafts

Act

mark_email_read

Mark read or unread

star_email

Star or unstar

move_email

Move between folders

delete_email

Soft-delete to Trash; permanent only if already in Trash

Folders

get_folders

List all folders with message counts

sync_folders

Force-refresh folder list

System

get_connection_status

SMTP and IMAP connection health

Architecture

Architecture

src/
  index.ts            Entry point, transport selection, graceful shutdown
  server.ts           McpServer setup, tool registration
  config.ts           Zod-validated environment configuration
  logger.ts           Structured stderr logger with credential redaction
  types.ts            Shared TypeScript interfaces
  services/
    smtp.ts           nodemailer wrapper (lazy connection)
    imap.ts           imapflow + mailparser wrapper (lazy connection, auto-reconnect)
  tools/
    sending.ts        send_email, send_test_email
    reading.ts        get_emails, get_email_by_id, search_emails
    drafts.ts         create_draft, update_draft, delete_draft, send_draft
    actions.ts        mark_email_read, star_email, move_email, delete_email
    folders.ts        get_folders, sync_folders
    system.ts         get_connection_status
  • McpServer API (SDK v1.29+) with Zod input validation on every tool

  • Tool annotations (readOnlyHint, destructiveHint, openWorldHint) per MCP spec

  • Dual transport -- stdio for local use, Streamable HTTP for remote deployment

  • Lazy connections -- SMTP and IMAP connect on first use, not at startup

  • Credential redaction -- passwords scrubbed from all log output

  • Soft delete -- delete_email moves to Trash first; permanent delete only from Trash

Development

npm run dev          # Watch mode with tsx
npm run typecheck    # Type checking without emit
npm run lint         # ESLint
npm run format       # Prettier
npm test             # Run tests
npm run build        # Rebuild (symlink picks up changes automatically)

Credits

Originally scaffolded from anyrxo/protonmail-pro-mcp. Completely rewritten with modern MCP SDK, Zod validation, dual transport, and full tool implementations.

License

MIT

Available Tools

17 tools
create_draftB

Create a new draft email in the Drafts folder

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoRecipient email address(es), comma-separated
ccNoCC recipients, comma-separated
bccNoBCC recipients, comma-separated
subjectYesEmail subject
bodyYesEmail body content
isHtmlNoWhether body is HTML
replyToNoReply-to email address

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, so description adds no extra behavioral context. No mention of side effects or constraints beyond creating a draft.

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?

One short, clear sentence with no wasted words. Every word provides value.

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

Completeness2/5

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

Despite high schema coverage, the description does not explain behavioral aspects like HTML vs plain text handling, optional parameters, or that it does not send the email. Minimal for a 7-param tool.

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 the description adds no meaning beyond the schema. Baseline of 3 is appropriate.

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?

The description clearly states the verb 'Create' and resource 'new draft email' with location 'Drafts folder', distinguishing it from siblings like send_draft or update_draft.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like send_email or update_draft. No prerequisites or exclusions mentioned.

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

delete_draftB
Destructive

Delete a draft email

ParametersJSON Schema
NameRequiredDescriptionDefault
draftIdYesDraft ID to delete (format: Drafts:uid)

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true, so description adds no further behavioral context (e.g., permanence, effects on attachments, undo capability). It simply restates the action without expanding on side effects.

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?

The description is a single clear sentence with no redundant words, effectively conveying the tool's purpose without unnecessary elaboration.

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?

For a simple delete tool with one parameter and destructive annotation, the description is sufficient but minimal. It does not clarify what happens after deletion (e.g., success, error responses) or mention if the draft must exist. Could be improved with a brief note on side effects.

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?

Input schema has 100% coverage for the single parameter 'draftId', including format 'Draft:uid'. Description adds no extra meaning beyond the schema, meeting baseline for well-documented schema.

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?

Description states 'Delete a draft email', which clearly specifies the action (delete) and the resource (draft email). This distinguishes it from sibling tools like delete_email, update_draft, and send_draft.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as delete_email for non-draft emails or update_draft for modifications. It also lacks context about prerequisites like the draft being unsent.

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

delete_emailA
Destructive

Delete an email. Moves to Trash first; permanently deletes only if already in Trash.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailIdYesEmail ID (format: folder:uid)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate destructiveHint, so the description adds value by detailing the two-step deletion process (Trash first, then permanent). This goes beyond the annotations without contradicting them.

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 sentences, no wasted words, front-loaded with the action. Every sentence provides distinct information, making it highly concise.

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

Completeness5/5

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

For a simple tool with one required parameter, good annotations, and no output schema, the description fully covers behavior and edge cases. No additional context needed.

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 coverage is 100% for the single parameter emailId, which already includes description. The tool description does not add additional meaning beyond what the schema provides, so baseline of 3 is appropriate.

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?

The description explicitly states 'Delete an email' and distinguishes the two-step behavior (moves to Trash first, permanently deletes only if already in Trash). This is specific and differentiates from siblings like delete_draft or move_email.

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 description implies when to use it (for deletion, with awareness of current state), but does not explicitly compare to alternatives like move_email or delete_draft. The two-step process gives some context but lacks explicit when-to-use guidance.

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

get_attachmentA
Read-only

Download a specific attachment from an email

ParametersJSON Schema
NameRequiredDescriptionDefault
emailIdYesEmail ID (format: folder:uid)
filenameYesAttachment filename to retrieve

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's minimal 'download' assertion doesn't add behavioral context. It doesn't disclose error behavior (e.g., missing attachment), response format, or any side effects. With annotations covering the safety profile, a baseline of 3 is appropriate.

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?

A single, clear sentence with no wasted words. Every element is necessary and front-loaded.

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 simple download tool with 2 parameters and no output schema, the description is mostly complete but could hint at the return type (e.g., binary content) or mention file size limits. However, given the straightforward nature, a 4 is reasonable.

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 coverage is 100% with descriptions for both parameters (emailId and filename). The description adds no extra meaning beyond the schema, so baseline 3 is correct.

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?

The description 'Download a specific attachment from an email' clearly states the verb (download) and resource (attachment from an email), distinguishing it from siblings like get_email_by_id (which retrieves the entire email) and search_emails (which finds emails).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., get_email_by_id to inspect attachments inline), nor any prerequisites (e.g., requiring the emailId from a prior tool) or when not to use it.

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

get_connection_statusA
Read-only

Check the current SMTP and IMAP connection status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false; description adds specificity about checking SMTP and IMAP status, providing value beyond annotations.

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?

Single sentence, no unnecessary words, perfectly concise and front-loaded with purpose.

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?

Adequate for a zero-parameter read tool; could mention that it returns status object, but annotations and context make it functional.

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?

No parameters (baseline 4), description adds context about what connection status means (SMTP and IMAP), compensating for absence of parameters.

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?

Description uses specific verb 'Check' and identifies resource 'current SMTP and IMAP connection status', clearly distinguishing from sibling email operation tools.

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?

No explicit when-to-use or alternatives, but the simple zero-parameter tool implies its use for verifying connectivity before other operations.

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

get_email_by_idA
Read-only

Get a specific email by its ID with full body and headers

ParametersJSON Schema
NameRequiredDescriptionDefault
emailIdYesEmail ID (format: folder:uid)
formatNoBody format: text (default), html, or raw (both)text
includeBodyNoInclude email body (set false for headers/metadata only)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that the tool returns full body and headers, which is helpful beyond annotations. No contradictions.

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?

The description is a single sentence, direct, and front-loaded. No redundant information.

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?

Given 100% schema coverage, read-only annotations, and no output schema, the description is sufficiently complete. It could mention that the response includes full email content and headers, which it does.

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%, and the description does not add meaning beyond what the schema already provides for each parameter. Baseline score of 3 is appropriate.

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?

The description clearly states the action ('Get'), resource ('specific email by its ID'), and what is included ('full body and headers'). It distinguishes from sibling tools like get_emails (which lists multiple) and get_attachment (specific attachment).

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?

The description implies usage when an email ID is known and full content is needed. It does not explicitly state when not to use or alternatives, but the sibling list and context make it clear. Slight room for improvement.

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

get_emailsA
Read-only

Fetch emails from a folder with pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoFolder nameINBOX
limitNoNumber of emails to fetch
offsetNoPagination offset

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat that. It adds pagination context but does not disclose further behavioral traits like rate limits, authentication requirements, or response format. The description does not contradict annotations.

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?

The description is a single concise sentence that is front-loaded with the core purpose. It is efficient, though it could benefit from a brief mention of the output without becoming verbose.

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?

Given the lack of an output schema, the description should indicate what is returned (e.g., a list of email objects). It does not. For a simple fetch tool, the description is somewhat complete but misses output details. With many sibling tools, additional context would be helpful but not strictly necessary.

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 coverage is 100% with each parameter described adequately in the schema. The description adds the phrase 'with pagination' which hints at limit/offset usage but does not provide additional parameter semantics beyond what the schema already offers.

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?

The description clearly states the tool's action ('Fetch emails'), resource ('emails'), and context ('from a folder with pagination'). It effectively distinguishes from siblings like search_emails or get_email_by_id by specifying pagination and folder scope.

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 description does not explicitly state when to use this tool versus alternatives. It implies usage for folder-based listing with pagination, but lacks guidance on when to prefer this over search_emails or other siblings.

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

get_foldersA
Read-only

List all email folders with message counts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds 'with message counts', providing behavioral context beyond the annotations. No contradictions.

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?

Single sentence, no redundancy, and front-loaded with the action and resource.

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?

No output schema, but the description mentions 'with message counts', giving some idea of return values. For a simple list, it is fairly complete, though it could specify expected fields like folder IDs or names.

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?

The tool has zero parameters; baseline score of 4 applies. The description does not need to add parameter meaning.

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?

The description clearly states the verb 'list', resource 'email folders', and includes 'with message counts' which specifies the output. It is distinct from sibling tools like 'sync_folders'.

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?

While the description implies usage for retrieving folder lists, it does not explicitly mention when to use or not use this tool versus alternatives. However, for a simple read-only list tool, this is acceptable.

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

mark_email_readB

Mark an email as read or unread

ParametersJSON Schema
NameRequiredDescriptionDefault
emailIdYesEmail ID (format: folder:uid)
isReadNoSet to true for read, false for unread

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate this is not read-only and not destructive. The description adds no additional behavioral context, such as whether the change is immediate, how it interacts with IMAP, or any side effects. With annotations present, the description does not enhance transparency.

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?

A single sentence with no redundant words. Every part is essential: the verb, the resource, and the state options. No fluff or unnecessary structure.

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?

Given the simplicity of the tool (2 parameters, no output schema, no nested objects), the description is minimally adequate. It explains the core action but could be slightly improved by noting the immediate effect on the email or the need for a connection. Still sufficient for a straightforward operation.

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 coverage is 100% with clear parameter descriptions for 'emailId' (format) and 'isRead' (default and behavior). The description adds no extra meaning beyond the schema, meeting the baseline for high coverage.

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?

The description clearly states the action ('mark') and the resource ('email') with the possible states ('read or unread'). It effectively distinguishes this tool from siblings like 'star_email', 'delete_email', and 'move_email' by focusing on the read status flag.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., using 'get_emails' to check status, or 'star_email' for importance). It lacks any context about prerequisites (like connection state) or exclusions.

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

move_emailC

Move an email to a different folder

ParametersJSON Schema
NameRequiredDescriptionDefault
emailIdYesEmail ID (format: folder:uid)
targetFolderYesTarget folder name

TDQS

C2.9/5.0
Behavior2/5

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

The description adds little beyond the annotations: it states 'move' but does not clarify if the email is copied or removed from the source, nor does it explain permissions, reversibility, or side effects. Annotations indicate it is not read-only and not destructive, but the description does not elaborate on what that implies for the user.

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?

The description is a single, concise sentence that directly states the tool's purpose. Every word is necessary, and there is no redundant or irrelevant information.

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

Completeness2/5

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

For a tool that modifies state (moving an email), the description lacks information about the return value (e.g., success status) or any confirmation of the operation. Given the absence of an output schema, the description should provide more context about what happens after the move.

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?

With 100% schema coverage, the schema already documents both parameters (emailId format 'folder:uid', targetFolder name). The description does not add extra meaning or context beyond the schema, so a baseline score of 3 is appropriate.

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?

The description 'Move an email to a different folder' clearly states the action (move) and the resource (email) with a target context. It is specific and easily understood, though it does not explicitly differentiate from sibling tools like 'delete_email' or 'star_email'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'get_email_by_id' or 'mark_email_read'. There is no mention of prerequisites, limitations, or comparison with other tools.

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

search_emailsA
Read-only

Search emails with advanced filters across from, to, subject, dates, and flags

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFull-text search query
folderNoFolder to search inINBOX
fromNoFilter by sender
toNoFilter by recipient
subjectNoFilter by subject
hasAttachmentNoFilter by attachment presence
isReadNoFilter by read status
isStarredNoFilter starred emails
dateFromNoStart date (ISO format)
dateToNoEnd date (ISO format)
limitNoMax results

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true (safe) and destructiveHint=false. The description adds no new behavioral context such as performance, rate limits, authentication, or result handling. With annotations covering safety, the description provides minimal additional value.

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?

The description is a single sentence, 12 words, front-loading the key action and filter dimensions. Every word is functional, and it avoids redundancy with schema or annotations.

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

Completeness2/5

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

For a tool with 11 parameters and no output schema, the description is insufficient. It does not mention return format, pagination (limit behavior), error handling, or that results are email objects. The openWorldHint annotation suggests variable results, but description adds no clarity.

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 baseline is 3. The description summarizes filter types but does not add semantics beyond the schema (e.g., date format details, how flags interact). No extra value provided.

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?

The description clearly states it is a search tool for emails with advanced filters, specifying the filter dimensions (from, to, subject, dates, flags). It distinguishes itself from sibling tools like get_emails (list all) and get_email_by_id (single email) by indicating it offers filtered searching.

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 description implies usage for complex filtering but does not explicitly contrast with simpler alternatives like get_emails. No guidance on when not to use or when to prefer other tools.

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

send_draftA

Send an existing draft via SMTP and remove it from Drafts

ParametersJSON Schema
NameRequiredDescriptionDefault
draftIdYesDraft ID to send (format: Drafts:uid)

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false. The description adds the behavioral detail that the draft is removed from Drafts after sending, which is not in annotations. This provides useful context beyond what annotations already indicate.

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?

The description is a single sentence of 10 words with no fluff. Every word contributes to the tool's purpose and behavior.

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?

The tool is simple with one parameter and no output schema. The description covers the core action and side effect. It lacks prerequisites (e.g., draft must exist, must be in Drafts), but for this low complexity, it is fairly complete.

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 the schema already documents draftId and its format. The description does not add additional meaning or constraints beyond what the schema provides, thus meeting the baseline.

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?

The description clearly states the verb 'Send' and the resource 'existing draft', and specifies the method (via SMTP) and the effect (remove from Drafts). This distinguishes it from siblings like send_email (which composes new) and delete_draft.

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 description implies usage when you have a draft to send, but does not explicitly state when to use this tool versus alternatives like send_email or create_draft. No when-not or alternative naming is provided.

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

send_emailA

Send an email via ProtonMail SMTP with support for CC, BCC, HTML, priority, and attachments

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email address(es), comma-separated
ccNoCC recipients, comma-separated
bccNoBCC recipients, comma-separated
subjectYesEmail subject
bodyYesEmail body content
isHtmlNoWhether body is HTML
priorityNoEmail prioritynormal
replyToNoReply-to email address
attachmentsNoFile attachments

TDQS

A3.5/5.0
Behavior3/5

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

The description correctly indicates a write operation (sending), matching readOnlyHint=false. However, it does not disclose other behavioral details such as saving to Sent folder or rate limits, given openWorldHint=true.

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?

A single sentence of 11 words, no redundancy. Front-loaded with the core action, appropriately sized for a straightforward task.

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 description covers the main action and features but does not mention what the output or response is, nor does it set expectations for side effects like saving to Sent or delivery confirmation. Given 9 parameters and no output schema, a bit more context would be helpful.

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?

The description lists feature groups (CC, BCC, HTML, priority, attachments) that correspond directly to schema parameters. With 100% schema coverage and individual parameter descriptions, the tool description adds no new semantics beyond grouping.

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?

The description clearly states it sends an email via ProtonMail SMTP and lists key features (CC, BCC, HTML, priority, attachments). It distinguishes from sibling tools like create_draft by implying immediate sending.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like create_draft or send_draft. It does not mention prerequisites or context for appropriate use.

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

send_test_emailA

Send a quick test email to verify SMTP is working

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email address
customMessageNoOptional custom message body

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate non-read-only and non-destructive behavior. The description adds that it sends a 'quick test email' for SMTP verification, which is consistent with annotations and clarifies the testing nature. No contradiction.

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?

The description is a single sentence that is front-loaded with the action and purpose, with no unnecessary words or redundancy.

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 simple test tool with full schema coverage and adequate annotations, the description is complete enough. It explains the purpose and scope. There is no output schema, but the return value is likely straightforward (success/failure) and not critical for agent usage.

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 coverage is 100%, with descriptions for both 'to' and 'customMessage'. The description does not add additional meaning beyond what the schema provides; it mentions 'quick test email' but that does not elaborate on parameters.

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?

The description clearly states 'Send a quick test email to verify SMTP is working', specifying a verb (send), resource (test email), and purpose (verify SMTP). It distinguishes from siblings like 'send_email' and 'send_draft' by emphasizing testing.

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?

The description implies this tool is for testing SMTP rather than regular email sending, but it does not explicitly state when not to use it or name alternatives like 'send_email'. The context is clear but lacks explicit exclusions.

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

star_emailA

Star or unstar an email

ParametersJSON Schema
NameRequiredDescriptionDefault
emailIdYesEmail ID (format: folder:uid)
isStarredNoSet to true to star, false to unstar

TDQS

A3.7/5.0
Behavior2/5

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

Annotations already indicate mutation (readOnlyHint=false) and non-destructiveness. The description adds no additional behavioral details such as authorization needs, error handling, or effects on other actions.

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?

Single sentence, no extraneous text, front-loaded with the core action. Highly concise and efficient.

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

Completeness5/5

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

Given the simple toggle operation with two well-documented parameters and no output schema, the description is fully sufficient for the agent to use the tool correctly.

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 covers 100% of parameters with descriptions. The tool description adds no extra meaning beyond what the schema provides, meeting baseline.

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?

The description clearly states the verb ('star or unstar') and the resource ('an email'), distinguishing it from sibling tools like mark_email_read or move_email.

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 description provides no guidance on when to use this tool vs alternatives, nor prerequisites or conditions. The purpose is clear but lacking usage context.

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

sync_foldersA
Read-only

Force a refresh of the folder list from the IMAP server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, so the tool is a safe read. Description adds the 'force refresh' behavior, which is beyond annotations.

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?

Single sentence, no unnecessary words, front-loaded with the purpose.

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

Completeness5/5

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

For a simple tool with no parameters and no output schema, the description is complete and sufficient.

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?

No parameters exist, so schema coverage is 100%. The description does not need to add parameter info; baseline is 4.

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?

Description clearly states the tool forces a refresh of the folder list from the IMAP server, distinguishing it from sibling get_folders which likely returns cached data.

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 description implies usage when needing an up-to-date folder list, but does not explicitly mention when not to use it or provide alternatives.

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

update_draftB

Update an existing draft by replacing it with new content

ParametersJSON Schema
NameRequiredDescriptionDefault
draftIdYesDraft ID to update (format: Drafts:uid)
toNoRecipient email address(es), comma-separated
ccNoCC recipients, comma-separated
bccNoBCC recipients, comma-separated
subjectYesEmail subject
bodyYesEmail body content
isHtmlNoWhether body is HTML
replyToNoReply-to email address

TDQS

B3.4/5.0
Behavior3/5

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

Annotations indicate a write operation (readOnlyHint=false) with no destructive hint. The description adds 'replace with new content' implying full overwrite, but doesn't specify whether omitted fields are reset or preserved. With annotations present, the bar is lowered, but more detail on side effects would help.

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?

Extremely concise: one sentence, no filler. Every word is necessary.

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

Completeness2/5

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

The description is too brief for a tool with 8 parameters. It omits important details like whether partial updates are allowed, how missing fields are handled (reset vs. preserve), and any preconditions (e.g., draft must exist). No output schema is present, so description could compensate but doesn't.

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 each parameter is documented. The description adds no extra meaning beyond stating 'replace with new content', which implies all fields may be affected but doesn't clarify partial updates.

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?

The description clearly states the tool updates an existing draft, with a specific verb ('update') and resource ('draft'). It distinguishes well from sibling tools like create_draft, delete_draft, and send_draft.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. No mention of prerequisites (e.g., existing draft ID) or scenarios where this tool is preferred over other draft-related tools.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv2.0.0
    • First observedcreate_draft
    • First observeddelete_draft
    • First observeddelete_email
    • First observedget_attachment
    • First observedget_connection_status
    • First observedget_email_by_id
    • First observedget_emails
    • First observedget_folders
    • First observedmark_email_read
    • First observedmove_email
    • First observedsearch_emails
    • First observedsend_draft
    • First observedsend_email
    • First observedsend_test_email
    • First observedstar_email
    • First observedsync_folders
    • First observedupdate_draft

TDQS

A3.7/5.0

Scored across 17 tools

Disambiguation5/5

Every tool targets a distinct action: draft creation/deletion/update/send, email retrieval/deletion/marking/moving/starring, folder listing/sync, attachment download, connection status, and sending. No two tools have ambiguous overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_draft, get_emails, mark_email_read). Even multi-word names maintain the pattern (get_connection_status, send_test_email).

Tool Count4/5

17 tools cover the core email management lifecycle (drafts, send, receive, folders, attachments, search) without seeming excessive. Slightly above typical range but well-scoped for the domain.

Completeness4/5

Tools provide full CRUD for drafts and emails (including send, mark, move, star), plus folder listing, search, attachments, and connection status. Missing folder creation/renaming, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to send, read, search, and organize Proton Mail email via SMTP and IMAP through the Model Context Protocol.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to Proton Mail via MCP, enabling AI agents to list accounts/folders, search messages, and read emails using Proton Mail Bridge's local IMAP server.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to read, organize, and send Proton Mail through the local Proton Bridge, with careful gating for sending and attachment access.
    6
    34
    1
    Apache 2.0