Skip to main content
Glama
mattias242

protonmail-mcp-server

by mattias242

Svara på mejl

reply_to_email
Destructive

Reply to a ProtonMail email by UID and mailbox, automatically set threading headers, choose reply-to address, quote original, and send with optional reply-all, cc, bcc, or attachments.

Instructions

Svara på ett e-post. Sätter In-Reply-To, References och Re:-prefix automatiskt.

Svaret går till originalets Reply-To om den finns, annars till From. Är originalet ett mejl du själv skickat går svaret till dess mottagare, och hade det bara dig själv som mottagare går svaret till dig själv. Ett mejl räknas som ditt eget bara om Proton märkt det som skickat inifrån Proton eller om det finns i Sent — inte bara för att From är din adress. Originalet citeras under svaret ("Den skrev :" och "> "-rader).

Args: uid: UID för e-posten att svara på body: Svarstexten i klartext mailbox: Mappen som UID:t kom från (obligatorisk). UID:n gäller per mapp: samma UID i en annan mapp är ett annat mejl. Använd fältet mailbox från svaret av list_emails, search_emails eller get_email. body_html: Valfri HTML-version av svarstexten reply_all: Svara alla — ta även med originalets To och Cc (utom ditt eget konto) cc: Ytterligare kopia-adress(er) bcc: Hemlig kopia-adress(er) quote_original: Citera originalet under svaret (standard: True) attachments: Filer att bifoga — ett filnamn eller en lista, inom bilagekatalogen (PROTONMAIL_ATTACHMENT_DIR). Högst 20 filer och 25 MB tillsammans. Originalets bilagor följer inte med i ett svar.

Returns: True om svaret skickades. Vägrar servern några av mottagarna kastas ett fel som anger vilka — skicka då inte om till alla.

Raises: ValueError: "Inget meddelande med UID … i …" när UID:t inte finns i mailbox (oftast ett UID från en annan mapp) — inget skickas.

Input Schema

NameRequiredDescriptionDefault
ccNo
bccNo
uidYes
bodyYes
mailboxYes
body_htmlNo
reply_allNo
attachmentsNo
quote_originalNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv0.4.0
    • addedInput schema / properties / attachments
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 20,
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Attachments"
      +}
    • addedInput schema / properties / bcc
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Bcc"
      +}
    • addedInput schema / properties / cc
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Cc"
      +}
    • removedInput schema / properties / mailbox / default
      Removed value: -"INBOX"
    • addedInput schema / properties / mailbox / maxLength
      Added value: +255
    • addedInput schema / properties / mailbox / minLength
      Added value: +1
    • addedInput schema / properties / quote_original
      Added value: +{
      +  "default": true,
      +  "title": "Quote Original",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / reply_all
      Added value: +{
      +  "default": false,
      +  "title": "Reply All",
      +  "type": "boolean"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "uid",
      -  "body"
      -]New value: +[
      +  "uid",
      +  "body",
      +  "mailbox"
      +]
  2. First observedv0.1.0

TDQS

A4.3/5.0
Behavior5/5

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

With annotations only declaring write/destructive/openWorld, the description adds substantial context: Reply-To vs From resolution, the self-sent-mail heuristic (Proton-marked or present in Sent), automatic quoting format, attachment limits (20 files / 25 MB), the fact that original attachments are NOT carried over, and the refusal-on-rejected-recipient behavior with a warning not to resend to all.

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?

Structured with Args/Returns/Raises and front-loaded with the core behavior. Dense and mostly earning its place, though the paragraph on self-sent detection is lengthy for an edge case and could be tightened.

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 9-parameter destructive mutation tool with 0% schema coverage, the description covers return value, the specific ValueError text and its cause, recipient-refusal behavior, and every argument. An agent has everything needed to call it correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully carries the burden — and it does: uid, body, the mandatory per-mailbox semantics of mailbox (same UID in another folder is a different message), body_html, reply_all's inclusion of To/Cc excluding your own account, cc/bcc, quote_original's default, and attachments' directory constraint and limits.

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 states a specific verb and resource ('Svara på ett e-post') plus the automatic header behavior (In-Reply-To, References, Re:-prefix), which clearly separates it from send_email. It never names a sibling tool (e.g. create_reply_draft) to differentiate explicitly, so it stops short of a 5.

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?

There is practical guidance — the mailbox argument must come from the 'mailbox' field returned by list_emails/search_emails/get_email — but no statement of when to reply directly versus creating a draft (create_reply_draft/send_draft) or when reply_all should be preferred. Usage is implied rather than contrasted with alternatives.

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