strato-mail-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@strato-mail-mcpShow me my last 5 unread emails"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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: local2. Set Environment Variables
In Portainer Stack UI, add before deploying:
IMAP_USER=jouw-email@example.com
IMAP_PASSWORD=jouw-strato-password3. Deploy
Click "Deploy the stack" β Wait ~30 seconds
4. Verify
In Portainer β Containers β strato-mail-mcp
Should show
RunningLogs 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
Read & Search
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 conceptManage
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 emailsFiles
get_attachment(uid, filename)
β Get attachment path (for Claude to access)π§ Configuration Details
Strato Settings
IMAP:
Host:
imap.strato.com(SSL/TLS)Port:
993User: je Strato email
Pass: je Strato password
SMTP:
Host:
smtp.strato.com(SSL/TLS)Port:
465User: je Strato email
Pass: je Strato password
Docker Volumes
strato-attachmentsβ Attachments opgeslagen in/app/attachmentsPersisten over container restarts
Resource Limits
CPU: max
0.5coresMemory: max
256MBReserved:
0.25CPU,128MBRAM
π 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 blockedAttachments not saving
Check volume is mounted:
docker inspect strato-mail-mcp | grep -A 5 Mounts
Should show: /app/attachments β strato-attachmentsSlow 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
Containers β
strato-mail-mcpStats tab β CPU/Memory usage
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:
.envcontains password (NEVER commit to git!)In Portainer: credentials stored in container variables (encrypted)
In Docker: use
.envfile 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
Stacks β
strato-mail-mcpStop: click Stop
Update: remove stack, re-deploy with new code
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:
Check logs:
docker logs strato-mail-mcpVerify Strato credentials work in email client
Check IMAP/SMTP ports (993, 465) are accessible
Ensure
.envis correctly set
Version: 2.0.0
Status: β
Production-ready for Portainer
Available Tools
15 toolsdelete_emailC
Delete email(s)
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | Email UIDs |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Email UID | |
| filename | Yes | Attachment filename |
TDQS
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.
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.
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.
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.
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.
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.)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of emails (default 20) | |
| folder | No | Folder (default INBOX) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | Email UIDs |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | Email UIDs |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | Email UIDs |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | Email UIDs | |
| folder | Yes | Destination folder |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Email UID |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient(s) | |
| html | No | HTML body | |
| text | No | Body | |
| subject | Yes | Subject |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50) | |
| query | Yes | IMAP search query | |
| folder | No | Folder to search (default INBOX) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | CC recipients | |
| to | Yes | Recipient(s), comma-separated | |
| bcc | No | BCC recipients | |
| html | No | HTML body | |
| text | No | Plain text body | |
| subject | Yes | Email subject |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes | Folder name (e.g., INBOX, Sent, Drafts) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | Email UIDs |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Read, send, file and search email in any IMAP or Microsoft 365 mailbox, and check it arrived.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflowβ¦
Email infrastructure for AI agents β send, receive, search, and reply to email over MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables Claude to interact with email accounts via IMAP and SMTP, providing tools for searching, reading, sending, and managing emails across multiple providers.4060490MIT
- FlicenseNot gradedqualityDmaintenanceEnables Claude to read and send emails from your AGH University mailbox via IMAP and SMTP.1
- FlicenseNot gradedqualityDmaintenanceEnables Claude to read, search, send, and manage emails across multiple IMAP/SMTP accounts via a single deployment.
- FlicenseNot gradedqualityBmaintenanceEnables Claude to read, search, draft, send, flag, and move email across multiple IMAP/SMTP mailboxes while keeping credentials local.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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