Skip to main content
Glama
Ragazzoforte

strato-mail-mcp

by Ragazzoforte

Strato Mail MCP Server v2

Volledige mail client voor Claude via IMAP + SMTP β€” perfect voor Portainer hosting.


🎯 Features

βœ… IMAP Functionaliteit:

  • Alle mails lezen (onderwerp, body, HTML, headers)

  • Zoeken met geavanceerde IMAP filters

  • Folder management (switch, list)

  • Email flags (read/unread, starred, draft)

  • Attachment handling

  • Bulk operations

βœ… SMTP Functionaliteit:

  • Mails verzenden

  • CC/BCC support

  • HTML + plain text

βœ… Extra:

  • Mailbox statistics

  • Draft management

  • Portainer-ready Docker setup

  • Attachment persistence

  • Health checks


Related MCP server: AGH Mail MCP Server

πŸš€ Quick Start (Docker in Portainer)

1. In Portainer: Stacks β†’ Add Stack

Name: strato-mail-mcp

Paste this:

version: '3.8'

services:
  strato-mail-mcp:
    build:
      context: https://github.com/yourusername/strato-mail-mcp.git
      dockerfile: Dockerfile
    container_name: strato-mail-mcp
    image: strato-mail-mcp:latest
    restart: unless-stopped
    environment:
      IMAP_HOST: imap.strato.com
      IMAP_PORT: 993
      IMAP_USER: ${IMAP_USER}
      IMAP_PASSWORD: ${IMAP_PASSWORD}
      SMTP_HOST: smtp.strato.com
      SMTP_PORT: 465
      ATTACHMENT_DIR: /app/attachments
      NODE_ENV: production
    volumes:
      - strato-attachments:/app/attachments
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 256M
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

volumes:
  strato-attachments:
    driver: local

2. Set Environment Variables

In Portainer Stack UI, add before deploying:

IMAP_USER=jouw-email@example.com
IMAP_PASSWORD=jouw-strato-password

3. Deploy

Click "Deploy the stack" β†’ Wait ~30 seconds

4. Verify

In Portainer β†’ Containers β†’ strato-mail-mcp

  • Should show Running

  • Logs should show: [strato-mail-mcp] βœ“ Server started - Ready for Claude


πŸ”— Integratie met Claude

Option A: Lokaal (Windows/Mac/Linux)

Ga naar Claude Settings β†’ Developer β†’ MCP Settings:

{
  "mcpServers": {
    "strato-mail": {
      "command": "node",
      "args": ["/path/to/strato-mail-mcp/server.js"],
      "env": {
        "IMAP_USER": "jouw-email@example.com",
        "IMAP_PASSWORD": "jouw-password"
      }
    }
  }
}

Herstart Claude β†’ strato-mail is nu beschikbaar

Option B: Remote Docker (SSH naar Portainer host)

{
  "mcpServers": {
    "strato-mail": {
      "command": "docker",
      "args": ["exec", "-i", "strato-mail-mcp", "node", "/app/server.js"],
      "env": {
        "IMAP_USER": "jouw-email@example.com",
        "IMAP_PASSWORD": "jouw-password"
      }
    }
  }
}

πŸ“§ Beschikbare Tools

get_folders()
β†’ List alle mail folders (INBOX, Sent, Drafts, etc.)

search_emails(query, limit, folder)
β†’ Search met IMAP syntax:
   - ALL
   - UNSEEN
   - SEEN
   - FROM "user@example.com"
   - SUBJECT "keyword"
   - SINCE 15-Mar-2024
   - FLAGGED
   - DRAFT
   Voorbeelden: "UNSEEN FROM triple-audio", "ALL", "FLAGGED"

read_email(uid)
β†’ Lees volledige email (with attachments)

get_recent(count, folder)
β†’ Haal X recente mails (default 20)

get_mailbox_status()
β†’ Get folder statistieken (total, unread, recent)

Send & Draft

send_email(to, subject, text/html, cc, bcc)
β†’ Verstuur email direct

save_draft(to, subject, text/html)
β†’ Opslaan als concept

Manage

mark_read(uids)
β†’ Mark emails as read

mark_unread(uids)
β†’ Mark emails as unread

mark_flagged(uids)
β†’ Star/flag emails

unmark_flagged(uids)
β†’ Remove star

switch_folder(folder)
β†’ Switch to different folder

move_email(uids, folder)
β†’ Move emails to folder

delete_email(uids)
β†’ Delete emails

Files

get_attachment(uid, filename)
β†’ Get attachment path (for Claude to access)

πŸ”§ Configuration Details

Strato Settings

IMAP:

  • Host: imap.strato.com (SSL/TLS)

  • Port: 993

  • User: je Strato email

  • Pass: je Strato password

SMTP:

  • Host: smtp.strato.com (SSL/TLS)

  • Port: 465

  • User: je Strato email

  • Pass: je Strato password

Docker Volumes

  • strato-attachments β†’ Attachments opgeslagen in /app/attachments

  • Persisten over container restarts

Resource Limits

  • CPU: max 0.5 cores

  • Memory: max 256MB

  • Reserved: 0.25 CPU, 128MB RAM


πŸ› Troubleshooting

"IMAP connection failed"

Check in Portainer logs:
Containers β†’ strato-mail-mcp β†’ Logs

Waarschijnlijke oorzaken:
- IMAP_USER/PASSWORD incorrect
- Strato account IMAP disabled
- Network firewall port 993 blocked

"SMTP auth failed"

Check:
- IMAP_PASSWORD is correct (same for SMTP at Strato)
- Strato account allows SMTP
- Port 465 not blocked

Attachments not saving

Check volume is mounted:
docker inspect strato-mail-mcp | grep -A 5 Mounts

Should show: /app/attachments β†’ strato-attachments

Slow searches

IMAP is inherent slow for large mailboxes.
Use more specific queries:
- "UNSEEN" instead of "ALL"
- "FROM example.com" to narrow down
- Limit parameter

πŸ“ˆ Monitoring

In Portainer

  1. Containers β†’ strato-mail-mcp

  2. Stats tab β†’ CPU/Memory usage

  3. Logs β†’ Real-time activity

Docker CLI

# Follow logs
docker logs -f strato-mail-mcp

# Container stats
docker stats strato-mail-mcp

# Shell access (debug)
docker exec -it strato-mail-mcp sh

πŸ” Security

⚠️ Credentials Storage:

  • .env contains password (NEVER commit to git!)

  • In Portainer: credentials stored in container variables (encrypted)

  • In Docker: use .env file OR Portainer UI (don't hardcode)

  • Recommended: Use Portainer "Secrets" for production

Access Control:

  • Container runs as non-root user

  • TLS/SSL for IMAP (993) and SMTP (465)

  • Local filesystem attachments only


πŸš€ Advanced

Custom Folders

Strato default folders: INBOX, Sent, Drafts, Trash, Junk

If you have custom folders, use full path:

switch_folder("folder/subfolder")

Email Size Limits

Strato typically allows:

  • Single mail: up to 50MB (with attachments)

  • Mailbox: depends on plan

Large attachments are downloaded to container volume automatically.

Rate Limiting

IMAP servers have implicit rate limits. If you get "too many connections":

  • Reduce concurrent searches

  • Add delays between operations

  • Use specific queries instead of broad searches


πŸ“ API Examples (in Claude)

Search unread emails

"Search my unread emails from Triple Audio"
β†’ Claude calls: search_emails(query="UNSEEN FROM triple-audio")

Read recent mails

"Show me my last 5 emails"
β†’ Claude calls: get_recent(count=5)

Send email

"Send email to marco@triple-audio.nl with subject 'Themis Update'"
β†’ Claude calls: send_email(to="marco@...", subject="Themis Update", text="...", html="...")

Manage folders

"Move all Themis emails to a folder"
β†’ Claude calls: search_emails(query='SUBJECT "Themis"') β†’ move_email(uids=[...], folder="Themis")

πŸ›‘ Stopping / Updating

In Portainer

  1. Stacks β†’ strato-mail-mcp

  2. Stop: click Stop

  3. Update: remove stack, re-deploy with new code

  4. Logs: check health status

Docker CLI

# Stop
docker-compose down

# Restart
docker-compose up -d

# View logs
docker logs strato-mail-mcp

πŸ“ž Support

If issues:

  1. Check logs: docker logs strato-mail-mcp

  2. Verify Strato credentials work in email client

  3. Check IMAP/SMTP ports (993, 465) are accessible

  4. Ensure .env is correctly set


Version: 2.0.0
Status: βœ… Production-ready for Portainer

Available Tools

15 tools
delete_emailC

Delete email(s)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidsYesEmail UIDs

TDQS

C2/5.0
Behavior1/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It fails to mention whether deletion is permanent or moves to trash, whether it affects only the current folder, or what happens to associated attachments. The bare statement 'Delete email(s)' offers no behavioral context beyond the action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief, but it is under-specification rather than efficient conciseness. It lacks critical context that a delete operation requires, so the brevity is not a positive attribute.

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 destructive operation with no annotations and no output schema, the description is woefully incomplete. It does not specify whether deletion is hard or soft, how UIDs are scoped, or any side effects. The simple parameter count does not excuse this lack of essential operational context.

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% (the only parameter 'uids' has a description 'Email UIDs'). The tool description adds no extra meaning about the parameter, but the baseline is 3 given high schema coverage.

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

Purpose2/5

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

The description 'Delete email(s)' is a direct restatement of the tool name 'delete_email', adding only a plural marker. It does not provide any distinguishing information beyond what the name already conveys, making it essentially a tautology.

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 like move_email or mark_read. There is no context about prerequisites, folder selection, or distinguishing from other email operations.

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

get_attachmentB

Get attachment file path

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesEmail UID
filenameYesAttachment filename

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only says 'Get attachment file path,' which implies a read operation, but does not clarify whether this downloads the attachment, returns a local/remote path, or has side effects. The return format and error behavior are entirely undisclosed.

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 immediately states the purpose. There is no unnecessary wording or redundant structure, making it appropriately sized for the tool's simplicity.

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 getter with only two parameters and no output schema, the description offers a minimal but functional overview. However, it lacks critical context about what the file path represents (local temp file, server path, URL) and any dependencies between this tool and others, leaving some completeness gaps.

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% (both uid and filename have descriptions), meeting the baseline for no additional parameter explanation. The description adds no extra nuance beyond naming the operation; parameter meanings are already provided by the 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?

The description 'Get attachment file path' uses a clear verb-action pair with a specific resource, immediately distinguishing this tool from siblings like read_email, get_folders, and send_email. It unambiguously states what the tool does without tautology.

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 usage context is provided. The description does not mention when to use this tool, any prerequisites, or alternatives. For example, there is no guidance on whether the attachment must be fetched after read_email or how the file path is meant to be consumed.

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

get_foldersA

List all mail folders (INBOX, Sent, Drafts, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It correctly indicates this is a read-only list operation, but it does not disclose details such as ordering, whether folders are returned with metadata, authentication requirements, or potential pagination. For a simple list tool this is minimally acceptable but not rich.

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, well-structured sentence that immediately states the tool's purpose and includes helpful examples in parentheses. Every word earns its place with no redundancy.

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 zero-parameter tool with no output schema, this description is complete. It tells the agent exactly what action is performed and what resource is targeted, and the examples clarify the expected result. There is no missing context needed for correct invocation.

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, so the baseline is 4. There is no parameter complexity to document, and the description adds no unnecessary parameter information.

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 uses a specific verb ('List') and a clear resource ('all mail folders') with concrete examples (INBOX, Sent, Drafts). It clearly distinguishes itself from sibling tools like switch_folder, which changes folders, and get_mailbox_status, which likely returns status information.

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 clearly implies this tool should be used when the agent needs to enumerate the available mail folders. It does not explicitly mention alternatives or when not to use it, but the context is unambiguous because the tool is a straightforward list operation with no parameters.

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

get_mailbox_statusB

Get current folder statistics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only says 'get' which implies a read operation, but doesn't disclose what statistics are included, whether folder context matters, or any side effects. It adds minimal behavioral detail beyond the verb.

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 one short sentence with no wasted words. It is appropriately sized for a zero-parameter tool and front-loaded with the action and object.

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 (0 params, no output schema), the description is minimally adequate but incomplete. It leaves 'folder statistics' undefined, so the agent cannot predict what fields or counts will be returned. Extra detail would improve completeness.

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, so the baseline is 4. The description adds slight context by saying 'current folder' which hints at an implicit current-folder concept, but since there are no parameters, no further explanation is needed.

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 clearly states the tool gets 'current folder statistics,' which is a specific verb and resource. It distinguishes from siblings like get_folders (which lists folders) by focusing on statistics, but 'statistics' is somewhat vague without specifying what they are.

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. There is no context about typical use cases, prerequisites, or exclusions, so an agent would have to infer usage from the name alone.

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

get_recentB

Get recent emails from specified folder

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of emails (default 20)
folderNoFolder (default INBOX)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'recent' which hints at recency filtering, but does not clarify whether the operation is read-only, how emails are ordered, whether it returns full content or headers, or any side effects. This is a minimal disclosure.

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, front-loaded sentence with no redundancy. It communicates the essential purpose without wasting words, making it highly concise and well-structured.

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 tool's simplicity (2 optional params, no output schema), the description covers the basic purpose but leaves gaps around return format, ordering, and the exact meaning of 'recent.' It is adequate for a straightforward list tool, but not as complete as it could be given the lack of annotations or output schema.

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 input schema already describes both parameters (count and folder) with 100% coverage. The description adds no additional parameter semantics beyond reinforcing that the folder is selectable. With high schema coverage, the baseline 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 clearly states the verb ('Get') and resource ('recent emails from specified folder'), making it easy to understand the core action. It implies a scoped retrieval from a specific folder, which loosely distinguishes it from search_emails or read_email, though it doesn't explicitly name alternatives.

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 explicit guidance on when to use this tool versus siblings like search_emails or read_email. The context is only implied by the phrase 'recent emails' and the existence of sibling tools, but there is no direct recommendation or exclusion.

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

mark_flaggedC

Star/flag email(s)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidsYesEmail UIDs

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing behavior. It merely restates the name ('Star/flag' vs 'mark_flagged') and offers no information about whether the operation is reversible, idempotent, affects multiple emails, or requires specific permissions. This falls short for a mutation tool.

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, front-loaded sentence that clearly states the tool's purpose without redundancy. It could arguably include more context, but it is appropriately concise for a simple operation.

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 tool has one well-specified parameter and no output schema, so the description is the primary source of behavior. While it covers the basic purpose, it lacks usage guidance and behavioral transparency, which is notable given the sibling tools for read/unread/flag states. It is minimally viable but incomplete.

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 schema provides 100% coverage for the single 'uids' parameter with a description ('Email UIDs'), so the baseline is 3. The tool description adds no additional semantics beyond confirming it operates on emails, offering no format, constraints, or usage notes.

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 uses the specific verb 'star/flag' and identifies the resource as 'email(s)', clearly indicating the action of marking messages as flagged. It distinguishes from siblings like mark_read/unread and unmark_flagged through the positive flagging action, though it does not explicitly name an alternative.

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 about when to use this tool versus alternatives like mark_read, unmark_flagged, or move_email. There is no mention of prerequisites, scenarios, or exclusions, leaving the agent to infer appropriate usage.

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

mark_readB

Mark email(s) as read

ParametersJSON Schema
NameRequiredDescriptionDefault
uidsYesEmail UIDs

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Mark email(s) as read' and does not mention side effects, reversibility, permissions, or what happens on failure. For a mutation tool, this is a significant transparency gap.

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, short sentence with zero wasted words. It front-loads the action and is immediately understandable, making it highly concise.

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 the tool's simplicity (one parameter, 100% schema coverage, no output schema), the description is mostly complete for stating the primary purpose. However, it lacks usage context and behavioral details, which are not fully compensated elsewhere, but the core function is clear.

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 input schema already provides a description for the 'uids' parameter ('Email UIDs'), giving 100% schema coverage. The tool description adds no additional meaning beyond that, so the 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 uses the specific verb 'mark' with the resource 'email(s)' and the state 'as read', clearly distinguishing it from sibling tools like mark_unread and mark_flagged. It directly states the tool's function without ambiguity.

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 mark_unread or read_email. It simply states the action without any contextual cues, prerequisites, or exclusions, leaving the agent to infer usage.

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

mark_unreadB

Mark email(s) as unread

ParametersJSON Schema
NameRequiredDescriptionDefault
uidsYesEmail UIDs

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It simply states the action without mentioning side effects, permissions, reversibility, or any other operational details. It is a minimal statement for a mutation tool.

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 extremely concise and front-loaded. Every word contributes to the meaning, with no waste or redundancy.

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 tool with one parameter and no output schema, the description is minimally sufficient. However, given the lack of annotations and any additional context about the operation's implications, it remains at a baseline level of completeness.

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 schema description covers 100% of parameters with 'Email UIDs' for 'uids'. The description adds no extra meaning beyond the schema. Baseline score of 3 is appropriate since the schema already documents the parameter adequately.

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 'Mark email(s) as unread' uses a specific verb and resource, clearly distinguishing it from the sibling tool 'mark_read' which marks as read. It is unambiguous and self-explanatory.

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 like 'mark_read' or 'mark_flagged'. While the purpose implies usage, there is no explicit context 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 email(s) to folder

ParametersJSON Schema
NameRequiredDescriptionDefault
uidsYesEmail UIDs
folderYesDestination folder

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Move email(s) to folder', which implies a state change but does not disclose side effects, permissions required, reversibility, or whether the original email is deleted or kept. This is insufficient for a mutation tool.

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 with zero wasted words. It is appropriately short for a simple tool and provides the essential action in a clear, front-loaded manner.

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 tool has no annotations, no output schema, and a very terse description. For a mutation operation, the absence of any details about behavior, return values, or constraints makes the context incomplete. The description does not compensate for the missing structured metadata.

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 input schema already has high coverage (100%) with descriptions for both parameters ('Email UIDs' and 'Destination folder'). The description adds no further meaning beyond the schema, so the baseline score of 3 applies.

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

Purpose4/5

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

The description 'Move email(s) to folder' clearly states the action (move) and the resource (emails) with a destination. It is specific and unambiguous, though it does not explicitly differentiate from sibling tools like switch_folder, which is a similar concept but for changing the active folder rather than moving messages.

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. It simply states the action without mentioning prerequisites, exclusions, or situations where another tool might be more appropriate. There is no 'when to use' context beyond the obvious inference from the tool name.

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

read_emailA

Read full email content by UID

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesEmail UID

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'read' implies a safe, non-mutating operation, but no explicit statement about side effects, authorization requirements, or error behavior is made. The description is adequate for a simple read tool but does not add rich context beyond what 'read' naturally conveys.

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, well-structured sentence with no wasted words. It is front-loaded with the action and resource, making it easy to scan. Absolutely minimal and effective.

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 tool with only one parameter and no output schema, the description sufficiently covers the core function: fetching full email content by UID. It could be enhanced by clarifying what 'full content' includes (e.g., headers, body, attachments), but given the simplicity and clear parameter, it is nearly complete. Sibling tools and annotations would normally fill remaining gaps, but none are present here.

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 schema already provides 100% coverage for the single parameter 'uid' with description 'Email UID'. The tool description repeats 'by UID' but adds no additional semantic detail beyond what the schema already provides. Since schema coverage is high, this is a baseline 3; no extra value is contributed.

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 function: 'Read full email content by UID'. It specifies a concrete verb (read), a specific resource (email content), and a key targeting mechanism (UID), which distinguishes it from siblings like search_emails (search-based) or get_recent (list recent). The purpose is unambiguous and immediately actionable.

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 the usage context: when you have a UID and need the full email body, this is the tool to use. It does not explicitly state when not to use it or mention alternatives such as get_attachment or get_recent, but the UID-based targeting provides clear context. This is more than a vague hint 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.

save_draftB

Save email as draft (IMAP DRAFT folder)

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient(s)
htmlNoHTML body
textNoBody
subjectYesSubject

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only states the action and folder, adding minimal context. It does not mention permissions, return values, behavior on missing/invalid fields, or whether it overwrites existing draftsβ€”leaving significant gaps for a mutation tool.

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, immediately states the verb and object, and includes a clarifying parenthetical. Every word earns its place, with no filler or repetition.

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 tool is simple but has 4 parameters (2 required) and no output schema or annotations. The description does not explain the overall behavior beyond 'save as draft', nor does it cover preconditions, edge cases, or what success looks like. The schema helps with parameters but the description fails to provide adequate context for safe invocation.

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 input schema has 100% coverage with descriptions for all parameters (to, subject, html, text). The tool description adds no parameter-specific information, so it does not go beyond what the schema already provides. Baseline 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 'Save email as draft (IMAP DRAFT folder)' uses a specific verb ('Save') and resource ('email'), and explicitly states the destination folder, making it clear this is for draft creation rather than sending. It distinguishes from sibling tools like send_email and move_email by emphasizing the draft nature.

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 saving drafts but does not explicitly contrast with alternatives like send_email (which sends immediately) or mention when not to use it. The parenthetical 'IMAP DRAFT folder' provides context but no explicit when/when-not guidance.

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

search_emailsB

Search emails. IMAP syntax: ALL, UNSEEN, SEEN, FLAGGED, DRAFT, FROM "user@example.com", SUBJECT "word", BODY "word", SINCE 15-Mar-2024, BEFORE 20-Mar-2024

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
queryYesIMAP search query
folderNoFolder to search (default INBOX)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only lists query syntax examples and does not mention return format, pagination, sorting, whether emails are marked as read, or confirm that this is a read-only operation. This is a significant transparency gap.

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 followed by a compact list of syntax examples. It is front-loaded with the primary action and each syntax token serves a purpose, with no redundant or vague phrasing.

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?

Given the tool has 3 parameters and no output schema, the description should explain the return value or side effects to be fully actionable. It focuses on query syntax but omits what results are returned (e.g., full messages or IDs), how limit applies, and any behavioral details like default folder handling beyond the schema.

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?

Schema coverage is 100% for all three parameters. The description adds concrete IMAP query examples for the 'query' parameter, going beyond the schema's generic 'IMAP search query' description. This enriches parameter understanding, though limit and folder rely solely on 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?

The description opens with 'Search emails', which clearly states the action and resource. The IMAP syntax examples further specify the kinds of searches supported, effectively distinguishing it from sibling tools like get_recent or read_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?

No explicit guidance is provided on when to use search_emails versus alternatives such as get_recent or read_email. The IMAP syntax hints at complex search usage, but the description does not state prerequisites, when to choose this tool, or when to avoid it.

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

send_emailB

Send email via SMTP

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC recipients
toYesRecipient(s), comma-separated
bccNoBCC recipients
htmlNoHTML body
textNoPlain text body
subjectYesEmail subject

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must carry the behavioral transparency burden, but it only says 'Send email via SMTP'. It does not disclose that sending is an irreversible external action, potential failure modes (e.g., authentication or network errors), rate limits, or whether the email is queued or sent immediately. This is minimal for a mutation tool.

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 extremely concise at only four words, with zero filler or redundancy. It is front-loaded and easy to scan, effectively communicating the core action without unnecessary detail.

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 6 parameters and no annotations or output schema, this description is incomplete. It lacks operational details such as which body field to use (html vs text), how errors are surfaced, or whether prior authentication is required. The schema covers parameter names but not the tool's overall behavior or return semantics.

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 schema descriptions cover all 6 parameters with 100% coverage, so the baseline is 3. The tool description adds no parameter details beyond what is in the schema. The schema already documents recipient, subject, cc, bcc, html, and text, so the description provides no additional semantic value.

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 identifies the action as sending an email and specifies the transport method 'via SMTP'. This distinguishes it from sibling tools like save_draft or read_email, which handle different aspects of email management.

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. It does not mention that save_draft should be used for composing without sending, nor does it note any prerequisites like SMTP configuration or account authentication. The description merely states the action without contextual placement.

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

switch_folderC

Switch to different folder

ParametersJSON Schema
NameRequiredDescriptionDefault
folderYesFolder name (e.g., INBOX, Sent, Drafts)

TDQS

C2.7/5.0
Behavior1/5

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

With no annotations provided, the description must carry the full burden of disclosing behavioral traits. It simply says 'Switch to different folder' without mentioning side effects (e.g., changing the active folder context for future operations), error handling for invalid folders, or return value. The verb 'switch' hints at a state change but provides no meaningful detail.

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, front-loaded with the action, and contains no unnecessary words. It is appropriately sized for a simple one-parameter tool, even though it lacks detail in other dimensions.

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 the tool's simplicity, the description is too sparse. It does not mention the impact on subsequent operations, whether a folder must exist, or what happens after switching. Without annotations or an output schema, the description should provide more context to enable correct usage, but it falls short.

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 input schema provides 100% coverage for the single 'folder' parameter with a description and examples. The tool description adds no additional semantic value beyond the schema, so the 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 'Switch to different folder' uses a specific verb and resource, and the action is clear. It does not explicitly differentiate from sibling tools, but no other sibling tool performs folder switching, so the name and description are sufficient for basic identification.

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 or how it relates to alternatives like get_folders. It lacks any context about prerequisites, such as needing to list folders first, or about how it affects subsequent email operations.

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

unmark_flaggedB

Remove star/flag from email(s)

ParametersJSON Schema
NameRequiredDescriptionDefault
uidsYesEmail UIDs

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without mentioning side effects, permissions, idempotency, or scope (e.g., multiple emails). The mutation intent is implicit from the verb, but no behavioral detail is provided.

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 phrase with no filler. It communicates the essential action efficiently.

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 tool with full schema coverage and no output schema, the description is minimally adequate. However, it lacks usage guidance and behavioral transparency, which are important for an AI agent deciding when and how to invoke it.

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 schema already describes the sole parameter ('Email UIDs'), so the description adds no additional semantics. Baseline of 3 applies because schema coverage is 100% and the description doesn't need to compensate.

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 uses a clear verb ('Remove') and identifies the resource ('star/flag from email(s)'), distinguishing it from sibling tools like mark_flagged (which adds flags) and mark_read/unread. Even without explicit sibling differentiation, the action is unambiguous.

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. The description only states the action but does not mention exclusions, prerequisites, or situations where mark_unread or mark_flagged might be more appropriate.

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

TDQS

B3.3/5.0
Disambiguation5/5

Each tool targets a distinct email operation: folder listing, email search, reading, sending, drafting, flag management, moving, deleting, and attachments. Even closely related tools like get_folders, switch_folder, and get_mailbox_status have clearly separate purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as get_folders, send_email, mark_read, and delete_email. There are no mixed styles or vague verbs.

Tool Count5/5

15 tools is well-scoped for an email MCP server, covering the full range of common operations without redundancy. Each tool earns its place, and the count is at the upper end of the ideal range but appropriate.

Completeness4/5

The tool set covers core email workflows: send, receive, search, read, draft, flags, move, delete, attachments, and folder selection. Minor gaps include lack of folder creation/deletion and advanced search refinement, but these are not critical for typical usage.

Maintenance

ActivityStale
ResponsivenessSyncing

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
    A
    quality
    A
    maintenance
    Enables Claude to interact with email accounts via IMAP and SMTP, providing tools for searching, reading, sending, and managing emails across multiple providers.
    40
    604
    90
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to read, search, send, and manage emails across multiple IMAP/SMTP accounts via a single deployment.
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude to read, search, draft, send, flag, and move email across multiple IMAP/SMTP mailboxes while keeping credentials local.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ragazzoforte/strato-mail-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server