@aiwerk/mcp-server-imap
Provides tools for managing emails on Dovecot servers via IMAP/SMTP, including listing, reading, searching, sending, replying, moving, flagging, and deleting messages.
Provides tools for managing emails on Gmail via IMAP/SMTP, including listing, reading, searching, sending, replying, moving, flagging, and deleting messages.
Provides tools for managing emails on Infomaniak via IMAP/SMTP, including listing, reading, searching, sending, replying, moving, flagging, and deleting messages.
Provides tools for managing emails on OVH via IMAP/SMTP, including listing, reading, searching, sending, replying, moving, flagging, and deleting messages.
Provides tools for managing emails on ProtonMail via IMAP/SMTP (using ProtonMail Bridge), including listing, reading, searching, sending, replying, moving, flagging, and deleting messages.
Provides tools for managing emails on Zoho via IMAP/SMTP, including listing, reading, searching, sending, replying, moving, flagging, and deleting messages.
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., "@@aiwerk/mcp-server-imaplist my recent 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.
@aiwerk/mcp-server-imap
IMAP/SMTP MCP server that works with any email provider. Set host, user, pass — done.
Unlike Gmail-only or Outlook-only MCP servers, this one speaks standard IMAP/SMTP — so it works with every email provider out of the box.
Why this server?
Most email MCP servers only work with one provider (Gmail, Outlook). This one works with any provider that supports IMAP:
Gmail, Outlook, Yahoo — yes
Fastmail, ProtonMail Bridge, Zoho — yes
Self-hosted (Dovecot, Postfix, hMailServer) — yes
Corporate/hosted (Hostpoint, Infomaniak, OVH) — yes
One server, every mailbox.
Related MCP server: email-mcp
Highlights
Universal — standard IMAP/SMTP, works everywhere
Simple setup — just
IMAP_HOST,IMAP_USER,IMAP_PASSand you're connectedSafety first — email sending is disabled by default (
SMTP_SEND_ENABLED=false). Your AI agent can read emails but can't send anything until you explicitly opt inLazy credentials — the server starts and exposes its tool list without requiring credentials. Auth is only needed when a tool is actually called
Real MIME parsing — handles multipart, HTML/text, attachments, reply threading
AIWerk hosted service — email_send and email_reply are local-only
If you use this server through the AIWerk hosted service at aiwerkmcp.com, the two outgoing-mail tools are not exposed:
❌
email_send❌
email_reply
The other 8 read-side tools (email_list, email_read, email_search, email_folders, email_flag, email_move, email_delete, email_attachment) work normally on the hosted service.
Why? The hosted service shares an IP across all users. If outgoing mail went out from that shared IP, the IP would appear in every recipient's Received: headers — one bad actor could damage deliverability for every user. There is no shared-IP architecture where arbitrary user sends works safely.
How to send mail then? Run the server locally, where outgoing mail goes from your own IP and your own provider reputation. Three paths:
Ad-hoc one-email CLI — see the next section. Zero config, one-shot.
Direct stdio MCP server in your client (Cursor, Claude Desktop, OpenClaw) — point your client config at
npx -y @aiwerk/mcp-server-imapwith yourIMAP_*andSMTP_*env vars includingSMTP_SEND_ENABLED=true.Local
@aiwerk/mcp-bridge—npx -y @aiwerk/mcp-bridge install imap-email --catalog aiwerkmcp.com, then point your client at the local bridge endpoint.
In all three cases the mail goes from your home / office IP, not from the hosted service.
Ad-hoc one-email CLI
Note: On the AIWerk hosted service, the
email_sendandemail_replyMCP tools are not exposed (the service shares an IP across all users, so allowing arbitrary sends would risk every user's deliverability). Use any of the three paths below to send email locally.
Need to send a single email from the command line — for example, to deliver a draft your AI agent composed? Use aiwerk-send-email:
SMTP_HOST=smtp.gmail.com \
SMTP_PORT=587 \
SMTP_USER=me@gmail.com \
SMTP_PASS='app-password' \
SMTP_FROM='Me <me@gmail.com>' \
npx -y @aiwerk/mcp-server-imap aiwerk-send-email \
--to "alice@example.com" \
--subject "Re: invoice" \
--body "Got it, will pay Monday."On success, exits 0 and prints JSON: {"ok":true,"messageId":"...","envelope":{...}}
On failure, exits 1 with the error on stderr. Credentials are never printed.
All CLI arguments
Argument | Required | Description |
| Yes | Recipient(s), comma-separated |
| Yes | Subject line |
| One of body/html | Plain-text body |
| One of body/html | HTML body (both → multipart) |
| No |
|
| No | Space-separated reference IDs |
| No | CC recipients, comma-separated |
| No | BCC recipients, comma-separated |
CLI environment variables
Variable | Required | Default | Description |
| Yes | — | SMTP server hostname |
| Yes | — |
|
| Yes | — | SMTP username / email address |
| Yes | — | Password or app-specific password |
| Yes | — | Sender address ( |
| No |
|
|
Install
Three ways to get email tools — pick the one that fits.
1. Quick (single email) — aiwerk-send-email CLI above: no MCP client needed, one command sends one email.
2. Direct stdio MCP server — all 10 email tools exposed to your AI agent:
npx -y @aiwerk/mcp-server-imap3. Local bridge with catalog UX — install via the AIWerk catalog for a guided setup:
npx -y @aiwerk/mcp-bridge install imap-email --catalog bridge.aiwerk.chOption 1 — Hosted (zero setup)
No local runtime, no env vars on your machine — credentials are AES-256-GCM encrypted server-side via HashiCorp Vault.
Sign up at aiwerkmcp.com.
Install IMAP Email from the catalog and paste your IMAP/SMTP credentials.
Point your MCP client (Claude.ai, Cursor, Hermes, …) at your hosted endpoint:
https://bridge.aiwerk.ch/u/<your-user-id>/mcpwith your Bearer token.
All 10 tools appear immediately. Install other AIWerk recipes from the same bridge.
Option 2 — Self-hosted (npx)
Run directly — you manage the credentials:
IMAP_HOST="imap.example.com" \
IMAP_USER="user@example.com" \
IMAP_PASS="app-password" \
SMTP_HOST="smtp.example.com" \
npx @aiwerk/mcp-server-imapThe server starts immediately and responds to tools/list even without credentials — they're only required when a tool is actually called (lazy credentials).
Tools (10)
Tool | Purpose |
| List emails from a folder |
| Read a single message with full body |
| Search by from/to/subject/date/unread |
| List all folders with message counts |
| Move messages between folders |
| Set read/star/flag status |
| Move messages to Trash |
| Send a new email (requires opt-in) |
| Reply to a message (requires opt-in) |
| List or download attachments |
Configuration
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"email": {
"command": "npx",
"args": ["-y", "@aiwerk/mcp-server-imap"],
"env": {
"IMAP_HOST": "imap.example.com",
"IMAP_USER": "you@example.com",
"IMAP_PASS": "your-app-password",
"SMTP_HOST": "smtp.example.com"
}
}
}
}Cursor / Windsurf / VS Code
Same config format in the respective MCP settings.
AIWerk hosted service
If you want zero-setup, install via aiwerkmcp.com — see Option 1 above.
Environment variables
IMAP (required)
Variable | Default | Description |
| — | IMAP server hostname |
| — | Email address or username |
| — | Password or app-specific password |
|
| IMAP port |
|
| Use TLS |
|
| Connection timeout (ms) |
SMTP (optional, for sending)
Variable | Default | Description |
|
| SMTP server hostname |
|
| SMTP port |
|
| SMTP username |
|
| SMTP password |
|
| Use TLS |
|
| Sender address |
|
| Must be |
Debug
Variable | Default | Description |
|
| Verbose IMAP protocol logging |
Security
Email sending is disabled by default — set
SMTP_SEND_ENABLED=trueto enableCredentials are loaded lazily (only when a tool is called, not at startup)
No credentials are logged
Keep credentials in
.envor a secret manager — never commit them to git
Supported providers
Tested with: Hostpoint, Gmail (app password), Outlook/Microsoft 365, Yahoo Mail, Fastmail, Dovecot, Postfix.
Works with any standards-compliant IMAP/SMTP server.
Build from source
git clone https://github.com/AIWerk/mcp-server-imap
cd mcp-server-imap
npm install
npm run build
node dist/server.jsContributing
Issues and PRs are welcome! Please open an issue first for larger changes.
Changelog
See CHANGELOG.md for version history.
About AIWerk MCP
Part of the AIWerk MCP platform — curated, signed MCP recipes served either as npm packages for self-hosting or through our multi-tenant hosted service at aiwerkmcp.com.
Other AIWerk MCP servers:
@aiwerk/mcp-server-cal — Cal.com scheduling
@aiwerk/mcp-server-wise — Wise (TransferWise) Personal API, read-only
@aiwerk/mcp-server-clawhub — ClawHub skill catalog
Browse the full catalog (20+ recipes including GitHub, Linear, Notion, Stripe, …) at aiwerkmcp.com.
License
MIT — AIWerk
Available Tools
10 toolsemail_attachmentC
List or fetch a message attachment
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| folder | No | INBOX | |
| filename | No | ||
| index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full responsibility. It does not disclose whether the tool is read-only, requires specific permissions, or how it handles non-existent attachments. The phrase 'list or fetch' suggests two modes but no clarification on their behavior.
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 short (one sentence), which is concise but under-specifying. It does not waste words but lacks necessary detail to be useful.
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 four parameters and no output schema, the description is incomplete. It fails to explain return values, how listing vs. fetching differ, or how to specify which attachment. More information is needed for effective use.
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 0%, and the description adds no meaning beyond the schema. Parameters like uid, folder, filename, index are not explained; the description does not clarify how to use them to list or fetch attachments.
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 purpose with a verb (list/fetch) and resource (message attachment). However, it does not differentiate from siblings like email_list or email_read, which could also involve attachments implicitly.
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 such as email_list or email_read. Missing context on required prerequisites (e.g., user must have an email message open) or when listing vs. fetching is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_deleteC
Delete emails by moving them to Trash
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | ||
| folder | No | INBOX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions moving to Trash but does not disclose side effects (e.g., recoverability, permission requirements, or behavior when folder is specified).
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?
Single sentence is concise but under-specified. Could be improved by adding param details while remaining brief.
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 2 parameters and no output schema, the description lacks details on return values, error handling, and the role of the folder parameter.
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 0%, and the description adds no explanation for parameters (uids, folder). It does not specify that uids are email identifiers or that folder is the source folder.
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?
Description clearly states the action: delete emails by moving them to Trash. This distinguishes from siblings like email_move (which moves to arbitrary folders) and implies it's not permanent deletion.
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 guidelines on when to use this tool vs alternatives (e.g., email_move for moving to a specific folder, or a permanent delete tool if exists). No when-not or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_flagC
Set read/star flags on emails
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | ||
| action | Yes | ||
| folder | No | INBOX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It indicates a mutation operation but fails to mention authentication needs, side effects, or return values.
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, which is concise, but it could be more structured to include key details like parameter usage without becoming verbose.
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 three parameters and lack of output schema/annotations, the description is insufficient. It omits critical 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?
Schema description coverage is 0%, and the description does not explain any of the three parameters (uids, action, folder). Users have no guidance on how to specify emails or actions.
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 sets read/star flags on emails, specifying the verb and resource. However, it does not differentiate from sibling tools like email_read, which might cause confusion.
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 like email_read or email_search. There is no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_foldersA
List all folders and status counters
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must convey behavior. It states it's a read-only list operation, which is transparent, but lacks details on authentication, rate limits, or the meaning of 'status counters'.
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 no fluff, efficiently conveying the tool's purpose.
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 lack of output schema and low complexity, the description is adequate but does not specify the format of the returned list or whether status counters include specific counts (e.g., unread, total).
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?
There are no parameters, so the description does not need to add meaning. The baseline for no parameters is 4.
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 resource ('folders and status counters'), clearly distinguishing it from sibling tools like email_list and email_search.
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 does not explicitly state when to use this tool versus alternatives like email_list or email_search, nor does it mention any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_listC
List emails from a folder
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | INBOX | |
| limit | No | ||
| unreadOnly | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It fails to disclose essential behaviors: does it return full email bodies or just headers? Sorting? Required authentication? The single sentence is insufficient for transparency.
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, which is concise but too terse. It sacrifices necessary detail for brevity. Every sentence should earn its place, but here the one sentence is insufficient.
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 3 parameters, no output schema, and no annotations, the description is severely incomplete. It doesn't explain return format, pagination, or filtering behavior. The agent cannot reliably use this tool based solely on the description.
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 0%, meaning the description adds no meaning beyond the schema fields. It does not explain what 'folder' refers to, how 'limit' affects results, or what 'unreadOnly' does. The description is completely silent on parameters.
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 'List emails from a folder' clearly states the verb (list), resource (emails), and scope (from a folder). This distinguishes it from sibling tools like email_read (specific email) and email_search (search based on criteria).
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. For example, it doesn't clarify how folder selection works or when to use email_search instead of listing all emails. The agent gets no context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_moveB
Move email UIDs from one folder to another
| Name | Required | Description | Default |
|---|---|---|---|
| uids | Yes | ||
| from | No | INBOX | |
| to | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states 'move' which implies mutating state, but does not disclose consequences (e.g., what happens if destination folder doesn't exist, whether the operation is atomic, or if there are size limits). The description is too minimal for a mutating operation.
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 no fluff. It directly conveys the core function. It is appropriately concise for a straightforward 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?
Given the lack of output schema and annotations, the description is too sparse. It does not inform about success indicators, error conditions, or any constraints (e.g., moving within same mailbox?). For a 3-param tool, more detail is needed to ensure correct usage.
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 0%. The description adds meaning by explaining 'uids' as email identifiers and 'from'/'to' as folders. However, it does not mention the default value for 'from' (INBOX) or that 'to' is required. The parameter roles are partially clarified.
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 action (move), resource (email UIDs), and the concept of between folders. It distinguishes from siblings like email_delete and email_list. However, it does not mention the default 'from' folder (INBOX), which is useful contextual info.
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 when you need to relocate emails, but provides no explicit guidance on when to use vs alternatives (e.g., no copy tool is present). It lacks when-not scenarios or prerequisites like required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_readC
Read one email including body and attachments metadata
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| folder | No | INBOX | |
| format | No | text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It does not indicate if reading marks the email as seen, any size limits, error handling for invalid uid, or permission requirements.
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 concise (one sentence) and front-loaded with the action. However, it could be slightly restructured to include parameter hints without losing brevity.
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?
Without an output schema, the description should explain the return structure beyond 'body and attachments metadata'. It also lacks edge case handling (e.g., email not found).
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 0%, yet the description provides no explanation of the parameters (uid, folder, format). The agent must infer semantics solely from parameter names and types, which is insufficient.
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 'Read' and resource 'one email', specifying that it includes body and attachments metadata. However, it does not explicitly differentiate from sibling tools like email_list or email_search, which may return summaries.
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 guidance is provided. There is no mention of when to use this tool over alternatives, prerequisites (e.g., obtaining a uid from email_list), or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_replyC
Reply to an existing email via SMTP
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| folder | No | INBOX | |
| body | Yes | ||
| html | No | ||
| cc | No | ||
| replyAll | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks any behavioral details beyond the protocol. It does not disclose whether attachments are preserved, what happens to the original email, authentication requirements, or rate limits. No annotations exist to compensate.
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, making it concise. However, it sacrifices necessary detail. Every word earns its place but the overall value is limited by brevity.
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 6 parameters, no parameter descriptions, no output schema, and no annotations, the description is far from complete. It fails to cover essential context 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?
With 0% schema description coverage, the description must provide parameter meaning but does not. It adds no explanation for uid, folder, body, html, cc, or replyAll. The agent must guess parameter purposes from names alone.
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 action ('Reply'), the target ('existing email'), and the method ('via SMTP'). It distinguishes from sibling tools like email_send (send new) and email_read.
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. There is no mention of prerequisites, when to use 'replyAll', or how this differs from composing a new email with email_send.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_searchC
Search emails by text/header/date criteria
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| from | No | ||
| to | No | ||
| subject | No | ||
| since | No | ||
| before | No | ||
| unread | No | ||
| folder | No | INBOX | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits, but it only gives a vague purpose. It omits whether the search is read-only, any required permissions, rate limits, pagination behavior, or return format. This is a critical 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 extremely short, a single phrase. While concise, it sacrifices necessary detail. It lacks structure and front-loads only a high-level purpose, leaving out essential information that would help the agent.
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 9 parameters, no output schema, and no annotations, the description is woefully incomplete. It does not explain how to use the search, what results look like, or how parameters interact. For the complexity, the description fails to provide a complete picture.
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 has 9 parameters with 0% description coverage. The description only vaguely mentions 'text/header/date criteria', failing to explain specific parameters like 'query', 'from', 'to', or the purpose of 'folder' and 'limit'. The agent cannot infer parameter semantics from the description alone.
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 purpose: 'Search emails by text/header/date criteria'. It identifies the verb (search) and resource (emails), and distinguishes from sibling tools like email_list by specifying search criteria. However, it could be more precise about the types of criteria.
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 email_list or email_read. It does not mention prerequisites, context, or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_sendC
Send an email via SMTP
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| subject | Yes | ||
| body | Yes | ||
| html | No | ||
| cc | No | ||
| bcc | No | ||
| replyTo | No | ||
| inReplyTo | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only mentions 'via SMTP', offering minimal technical context. It fails to state whether email validation occurs, whether attachments are supported (and thus should be handled via email_attachment), or any rate limits or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it sacrifices essential information. It is not overly verbose, but the brevity results in unclear completeness. A better structure would include key behavioral notes up front.
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 8 parameters, no output schema, and no annotations, the description is critically incomplete. It provides no information on return values (e.g., sent email ID or error messages), no post-condition details, and no guidance on parameter combinations. Agents cannot reliably invoke this tool.
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 0%, yet the description adds no parameter-level details. It does not explain the meaning or constraints of any of the 8 parameters (e.g., 'to' expects email addresses, 'html' indicates HTML formatting), leaving agents without essential usage semantics.
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 uses the verb 'send' with resource 'email' and specifies the protocol 'via SMTP', which distinguishes it from siblings like email_reply (replying to existing threads) or email_read. However, it could be more specific about the tool's scope, such as indicating it sends a new email from scratch.
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 email_reply or email_attachment. An agent cannot tell if this tool is appropriate for sending a reply or attaching files without additional context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v1.2.0- First observed
email_attachment - First observed
email_delete - First observed
email_flag - First observed
email_folders - First observed
email_list - First observed
email_move - First observed
email_read - First observed
email_reply - First observed
email_search - First observed
email_send
TDQS
Each tool has a distinct purpose: attachment handling, deletion, flagging, folder listing, inbox listing, moving, reading, replying, searching, and sending. No overlapping functionality.
All tools share the 'email_' prefix, and most follow a verb_noun pattern (e.g., email_delete, email_send). 'email_attachment' and 'email_folders' are noun-based but clear given their descriptions.
10 tools cover essential email operations (list, read, send, reply, delete, move, flag, search, folders, attachments) without being excessive or sparse.
Core CRUD and search are present. Minor gaps like folder management (create/rename) or draft handling exist but are not critical for basic IMAP 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
Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.
A MCP server for Gmail that lets you search, read, and draft emails and replies.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA unified MCP server for email access across Gmail, Outlook, iCloud, and generic IMAP providers, enabling search, send, organize, and batch operations.39719MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for managing email via IMAP/SMTP, supporting multiple accounts and tools for reading, sending, searching, and organizing emails.35MIT
- AlicenseAqualityBmaintenanceMCP server that enables email management (send, read, search, delete, etc.) via IMAP/SMTP, compatible with Gmail, Outlook, Yahoo, iCloud, and other standard mail servers.11MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for reading and sending emails via IMAP and SMTP, designed for Zimbra and any standard mail host.241ISC
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/AIWerk/mcp-server-imap'
If you have feedback or need assistance with the MCP directory API, please join our Discord server