PrivateEmail MCP
The server enables Claude to interact with Namecheap PrivateEmail mailboxes via IMAP and SMTP, providing full email management:
Account & connectivity: Check IMAP/SMTP health, view account info.
List & search: List emails in any folder with filters (date, unread), search by sender/recipient/subject/body/text.
Read emails & threads: Fetch full content (text, HTML) and attachment metadata, get conversation threads.
Send & reply: Send new emails, reply (with threading and reply-all), forward.
Drafts: Save, list, and send drafts (moved to Trash after sending).
Organize: Move, copy, delete (trash/permanent), mark read/unread/flagged.
Manage folders: Create, rename, delete IMAP folders.
Attachments: Download attachments by part index (base64 or file).
Resources & prompts: Access inbox via URIs (recent, unread, messages, folders) and use prompts (summarize, triage, draft reply, compose).
PrivateEmail specifics: Automatically archives sent emails to the Sent folder, operates over standard IMAP/SMTP.
Provides an MCP interface for Namecheap PrivateEmail, enabling mailbox management including reading inbox, searching emails, sending and replying to messages, managing folders and drafts, and handling attachments via IMAP and SMTP.
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., "@PrivateEmail MCPshow me my recent inbox 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.
PrivateEmail MCP
PrivateEmail MCP is a Model Context Protocol server for Namecheap PrivateEmail.
It connects to mail.privateemail.com over IMAP and SMTP so Claude Code can read inboxes, search mail, draft replies, send messages, manage folders, and work with drafts.
This server is built for the Namecheap email provider called PrivateEmail. It is session scoped by design. Everything runs while Claude Code is connected to the server. There are no background workers, schedulers, or durable campaign daemons.
Reliability notes (v1.1.4)
VPN / firewall mail-port blocks: many networks (including corporate VPNs) blackhole outbound IMAP
993and SMTP465. Direct connects then hang until the client times out. Usescripts/run-mcp-with-tunnel.sh(SSH LocalForward via a host that can reachmail.privateemail.com, defaultubee). The wrapper starts the tunnel and points IMAP/SMTP at127.0.0.1:21993/127.0.0.1:21465withPRIVATEEMAIL_TLS_HOSTNAME=mail.privateemail.com.Fail-fast timeouts:
PRIVATEEMAIL_CONNECT_TIMEOUT(default 12s) andPRIVATEEMAIL_COMMAND_TIMEOUT(default 30s) replace the old 60s hangs. Timeouts return an actionable tunnel hint instead of an ambiguous agent timeout.Dependency pin: requires
mcp[cli]>=1.6.0,<2.0.0. MCP Python SDK 2.x removed FastMCP (mcp.server.fastmcp); an unpinned install pulls 2.0.0 and crashes on import. Use tagv1.1.3or newer (preferv1.1.4).Each IMAP tool call uses its own short-lived connection instead of one shared mailbox session
Inbox listings use header and snippet fetches instead of downloading full message bodies
Tool failures return clearer, agent-friendly error messages for bad UIDs, missing folders, and auth issues
Prompts such as
draft_replysend compact email payloads instead of full HTML blobsSent-folder archival no longer uses fragile
aioimaplibAPPEND. After every SMTP send, the server archives a CRLF-normalized copy intoSentwith stdlibimaplib, retries, and fails loudly if the Sent copy cannot be savedsend_draftrejects empty recipients or empty bodies before SMTPAttachment paths are validated as real files before send
Related MCP server: @aiwerk/mcp-server-imap
What it does
Reads inbox messages, threads, and attachments
Searches mail by sender, recipient, subject, body text, and date filters
Sends new emails
Replies and forwards while preserving thread headers
Saves and sends drafts
Moves, copies, deletes, and marks messages
Creates, renames, and deletes folders
Exposes inbox context as MCP resources
Exposes reusable prompts for summarizing inboxes and drafting replies
Saves sent messages into the
Sentfolder so they appear in PrivateEmail webmail
Why this exists
Namecheap PrivateEmail does not provide a public API for mailbox automation in the same way many SaaS products do. The supported integration path is standard email protocols. This server gives Claude Code a clean MCP interface on top of those protocols.
Features exposed to Claude Code
Tools
health_checkaccount_infolist_folderslist_emailssearch_emailsget_emailget_threaddownload_attachmentsend_emailreply_emailforward_emailsave_draftlist_draftssend_draftmove_emailcopy_emaildelete_emailmark_emailcreate_folderrename_folderdelete_folder
Resources
privateemail://accountprivateemail://foldersprivateemail://inbox/recentprivateemail://inbox/unreadprivateemail://email/{folder}/{uid}
Prompts
summarize_inboxtriage_unreaddraft_replycompose_email
Requirements
Python 3.11 or newer
uvinstalledA Namecheap PrivateEmail mailbox
Installation for Claude Code
Fastest install from GitHub
After this repository is pushed, add it directly to Claude Code with one command:
claude mcp add --scope user \
--env PRIVATEEMAIL_ADDRESS="you@yourdomain.com" \
--env PRIVATEEMAIL_PASSWORD="your-password" \
--env PRIVATEEMAIL_DISPLAY_NAME="Your Name" \
privateemail \
-- uvx --from git+https://github.com/ciphersolutions-dev/private-email-mcp privateemail-mcpNotes:
Install from tag
v1.1.3or newer (or currentmainafter that release). Older tags still have an unpinnedmcpdependency and will crash against MCP SDK 2.x.--scope userinstalls it once for all your projects. Use--scope projectif you want a repo-local setup instead.Everything after the
--separator is the command Claude Code runs.uvx --from git+... privateemail-mcpinstalls and launches the server directly from GitHub.
Install from a local clone
git clone https://github.com/ciphersolutions-dev/private-email-mcp.git
cd private-email-mcp
uv syncIf your network/VPN blocks outbound IMAP/SMTP (common), register the tunnel wrapper so Cursor starts the SSH LocalForward automatically:
# Cursor mcp.json command:
# /path/to/privateemail-mcp/scripts/run-mcp-with-tunnel.sh
# with env PRIVATEEMAIL_ADDRESS / PASSWORD / DISPLAY_NAME / PRIVATEEMAIL_TUNNEL_SSHDirect (no tunnel) when mail ports are reachable:
claude mcp add --scope user \
--env PRIVATEEMAIL_ADDRESS="you@yourdomain.com" \
--env PRIVATEEMAIL_PASSWORD="your-password" \
--env PRIVATEEMAIL_DISPLAY_NAME="Your Name" \
privateemail \
-- uv run --directory "$PWD" privateemail-mcpHelper install script
You can also use the included helper script after cloning the repo:
./scripts/install-claude-code.sh "you@yourdomain.com" "your-password" "Your Name"By default it registers the server at user scope. Pass a fourth argument of project to make it project scoped:
./scripts/install-claude-code.sh "you@yourdomain.com" "your-password" "Your Name" projectConfiguration
Environment variables:
PRIVATEEMAIL_ADDRESS- full mailbox addressPRIVATEEMAIL_PASSWORD- mailbox passwordPRIVATEEMAIL_DISPLAY_NAME- display name used for outbound mailPRIVATEEMAIL_IMAP_HOST- defaults tomail.privateemail.com(use127.0.0.1with the tunnel)PRIVATEEMAIL_IMAP_PORT- defaults to993(tunnel default21993)PRIVATEEMAIL_SMTP_HOST- defaults tomail.privateemail.com(use127.0.0.1with the tunnel)PRIVATEEMAIL_SMTP_PORT- defaults to465(tunnel default21465)PRIVATEEMAIL_TLS_HOSTNAME- TLS SNI/cert name when host is a tunnel loopback (default inferred asmail.privateemail.com)PRIVATEEMAIL_CONNECT_TIMEOUT- TCP connect timeout seconds (default12)PRIVATEEMAIL_COMMAND_TIMEOUT- IMAP/SMTP command timeout seconds (default30)PRIVATEEMAIL_TUNNEL_SSH- SSH host alias forscripts/mail-tunnel.sh(defaultubee)PRIVATEEMAIL_MAX_ATTACHMENT_BYTES- maximum attachment payload returned by the server
Example .env (tunnel mode):
PRIVATEEMAIL_ADDRESS=you@yourdomain.com
PRIVATEEMAIL_PASSWORD=your-password
PRIVATEEMAIL_DISPLAY_NAME=Your Name
PRIVATEEMAIL_IMAP_HOST=127.0.0.1
PRIVATEEMAIL_IMAP_PORT=21993
PRIVATEEMAIL_SMTP_HOST=127.0.0.1
PRIVATEEMAIL_SMTP_PORT=21465
PRIVATEEMAIL_TLS_HOSTNAME=mail.privateemail.com
PRIVATEEMAIL_TUNNEL_SSH=ubee
PRIVATEEMAIL_CONNECT_TIMEOUT=12
PRIVATEEMAIL_COMMAND_TIMEOUT=30
PRIVATEEMAIL_MAX_ATTACHMENT_BYTES=10485760Usage in Claude Code
Useful Claude Code commands:
claude mcp listclaude mcp get privateemailclaude mcp remove privateemail
Typical flows:
Read inbox: use
privateemail://inbox/recentor calllist_emailsReview unread mail: use
triage_unreadDraft a reply: use
draft_replySend a message now: use
send_emailReply in-thread: use
reply_emailSave a draft: use
save_draft
Development
uv sync
uv run pytest tests/ -qAcceptance tests are Gherkin features under features/, executed via pytest-bdd from tests/bdd/. They are the release gate for dependency compatibility, config/error contracts, Sent archival helpers, prompt payload safety, outbound guards, and MCP surface inventory.
Run locally:
uv run privateemail-mcpPrivateEmail behavior note
SMTP delivery alone does not create a copy in the Sent folder.
This server explicitly appends a copy to Sent after a successful send so the message shows up in PrivateEmail webmail.
Security
Keep your mailbox password in environment variables, not source control
.envis ignored by gitConsider using a dedicated mailbox or app-specific credential if your setup allows it
License
MIT
Available Tools
21 toolsaccount_infoARead-onlyIdempotent
Show configured mailbox address and server endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying exactly what information is shown (mailbox address and server endpoints), which goes beyond the annotations.
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 verb and resource.
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 no parameters and low complexity, the description is fully adequate. The presence of an output schema covers return value information, so no additional detail is needed.
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 zero parameters and 100% schema coverage (empty schema), the description does not need to explain parameters. The baseline score of 4 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 uses the specific verb 'Show' and clearly identifies the resource as 'configured mailbox address and server endpoints.' It distinguishes from sibling tools like list_emails or health_check by focusing solely on account configuration 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 implies usage for retrieving account configuration. While it does not explicitly state when not to use it or mention alternatives, the tool's simplicity and unique purpose among sibling tools make the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_emailB
Copy an email to another folder.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | IMAP UID | |
| folder | No | Source folder | INBOX |
| dest_folder | Yes | Destination folder |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (mutation) and destructiveHint=false (not destructive). The description adds no additional behavioral context, such as whether duplicates are allowed, error handling, or side effects beyond the basic copy action.
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 front-loads the action. Every word is necessary, and there is no redundancy or filler.
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?
With output schema present, return values need not be described. However, the description omits any mention of error conditions, permission requirements, or behavior when destination already contains the email. For a simple tool, it is minimally complete but has room for improvement.
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%, so the schema already documents all parameters (uid, folder, dest_folder). The description adds no extra semantics beyond what the schema 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 'Copy an email to another folder' clearly states the action (copy) and the resource (email) with target location (folder). It distinguishes from siblings like move_email (which relocates) and delete_email (which removes).
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 move_email. There is no mention of prerequisites (e.g., destination folder must exist) or when copying is preferred over moving.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderAIdempotent
Create an IMAP folder.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New folder name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, non-destructive, readOnlyHint=false. Description adds minimal extra: confirms it creates, but does not mention behavior if folder exists or other 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?
Single sentence with no unnecessary words. Efficient and to the point.
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, good annotations, and an output schema, the description is adequate. Could mention folder nesting behavior, but overall complete enough.
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%, and the parameter name is well-described in the schema ('New folder name'). The description adds no additional meaning beyond what the schema provides.
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 'Create an IMAP folder', using a specific verb and resource. It effectively distinguishes from sibling tools like list_folders, rename_folder, and delete_folder.
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 create a folder versus other operations (e.g., renaming or deleting). No mention of prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_emailADestructiveIdempotent
Delete an email (moves to Trash unless expunge=True or already in Trash).
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | IMAP UID | |
| folder | No | IMAP folder | INBOX |
| expunge | No | Permanently delete instead of moving to Trash |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that deletion is actually a move to Trash unless expunge=True or already in Trash, adding important behavioral context beyond annotations (destructiveHint, idempotentHint). No contradiction with annotations.
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 communicates the core behavior and key caveats with no wasted words.
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 three-parameter tool with an output schema, the description covers the essential behavior (trashing vs. permanent delete) and context. No additional details are needed.
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%, with basic parameter descriptions. The tool description does not add additional meaning beyond what is already in the schema, but also does not repeat it unnecessarily.
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 deletes an email, with the key nuance of moving to Trash unless expunge=True or already in Trash. This differentiates it from siblings like move_email or delete_folder, which have different operations.
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 explains the conditional behavior (move to Trash vs. permanent delete), providing context for when to set expunge. However, it does not explicitly contrast with alternative tools like move_email or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_folderBDestructiveIdempotent
Delete an IMAP folder.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Folder to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint and idempotentHint; the description adds no additional behavioral traits such as consequences for messages inside the folder 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?
Single sentence, no unnecessary words, immediately clear.
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 simple schema and annotations, the description lacks context about side effects, error handling, or return behavior. Considering the presence of an output schema, still incomplete for a destructive action.
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 description does not add meaning beyond the schema's parameter description 'Folder to delete'. Baseline is 3.
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 verb 'Delete' and resource 'IMAP folder', distinguishing it from sibling tools like create_folder and rename_folder.
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 or when not to use this tool, nor any prerequisites or conditions (e.g., whether the folder must be empty). Compared to siblings, it's implied for deletion but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_attachmentARead-onlyIdempotent
Download an attachment by part_index from get_email.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | IMAP UID | |
| folder | No | IMAP folder | INBOX |
| save_path | No | If set, write file here instead of returning base64 | |
| part_index | Yes | Attachment index from get_email |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, covering safety and side effects. The description adds no behavioral details beyond the action. No contradictions, but no additional value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff. Front-loaded with the verb and key resource. Every word earns its place.
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?
Output schema exists to detail return values. The tool is simple, and the description covers the essential context (part_index from get_email). Adequate for an agent to understand its function.
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% and all parameters are described adequately in the schema. The description does not add extra meaning to any parameter beyond what is in 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?
Description clearly states the action (download), the resource (attachment), and the source of the attachment (by part_index from get_email). This is specific and distinguishes from sibling tools, none of which are for downloading attachments.
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. It does not mention prerequisites (e.g., needing a part_index from get_email first) or when not to use it. The description is purely functional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forward_emailB
Forward an email by UID to a new recipient.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Forward recipient(s), comma-separated | |
| uid | Yes | IMAP UID to forward | |
| note | No | Optional note above forwarded content | |
| folder | No | IMAP folder | INBOX |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add meaningful behavioral transparency beyond the annotations. It fails to disclose that forwarding sends a copy of the email, that a note can be included, or what happens to the original (e.g., it remains). The annotations indicate a non-idempotent, non-read-only operation, but the description is too sparse to fully inform the agent.
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, using a single sentence that clearly states the action and key objects. It is front-loaded with the verb 'Forward' and immediately specifies the resource and destination.
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 having an output schema and 100% parameter coverage, the description lacks completeness for a mutation tool. It does not describe the effect on the email (original remains), the side effect of sending, or the output structure. The agent is left to guess the full impact.
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 all parameters with 100% coverage, so the description adds no additional meaning. The term 'by UID' mirrors the uid descriptor, and 'new recipient' mirrors the to descriptor. No new insight.
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 (forward), the target resource (email by UID), and the destination (new recipient), making it unmistakable. It distinguishes from siblings like reply_email or send_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?
The description provides no guidance on when to forward versus using reply_email, send_email, or other sibling tools. It only states the action, leaving the agent to infer usage context without criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_emailARead-onlyIdempotent
Fetch full email by UID including text/html and attachment metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | IMAP UID | |
| folder | No | IMAP folder | INBOX |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint, and openWorldHint. The description adds return content details (text/html, attachment metadata) but no additional behavioral traits. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no unnecessary words. Efficiently conveys the tool's action and output.
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 presence of an output schema, the description does not need to detail return values. It mentions what is included, aiding understanding. With many siblings, some guidance on tool selection would improve completeness, but current is adequate for a simple read operation.
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% with clear descriptions for uid and folder. The description only mentions 'by UID', adding no extra meaning beyond the schema parameters. Baseline for high coverage is 3.
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: 'Fetch full email by UID including text/html and attachment metadata.' It specifies the verb, resource, identifier, and what is returned, distinguishing it from siblings like list_emails (summaries) and download_attachment (specific attachment).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a UID and need the full email content, contrasting with list_emails and search_emails. However, it does not explicitly state when not to use or name alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_threadBRead-onlyIdempotent
Fetch a conversation thread related to the given message UID.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | IMAP UID of any message in the thread | |
| limit | No | ||
| folder | No | IMAP folder | INBOX |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the agent knows it's a safe, read-only operation. Description adds no additional behavioral traits, but annotations carry the burden effectively.
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?
Description is a single sentence, concise but lacks structure. It is front-loaded with key information, but could be expanded with parameter details.
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 output schema exists, return values need not be explained. However, with 3 parameters and many siblings, the description is minimal; it does not mention that the thread contains multiple emails or ordering.
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?
Description does not add meaning beyond the input schema. For 'uid' and 'folder', it merely restates schema descriptions; for 'limit', it provides no explanation. With 67% schema coverage, description should supplement missing details but does not.
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 'Fetch a conversation thread related to the given message UID', specifying verb, resource, and context. It distinguishes from siblings like get_email (single email) and search_emails (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?
No guidance on when to use this tool versus alternatives such as get_email or search_emails. No explicit context or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkARead-onlyIdempotent
Test IMAP and SMTP connectivity to mail.privateemail.com.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, indicating the tool is safe and non-destructive. The description adds context about the specific protocols (IMAP, SMTP) and server, which goes beyond the annotations.
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 conveys the purpose without unnecessary words.
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 an output schema (as indicated by context) and no parameters, the description sufficiently explains what the tool does. It could mention that the output indicates success/failure, but the output schema covers that.
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 no parameters, and the schema with 100% coverage is empty. According to guidelines, 0 parameters baselines at 4, and the description does not add parameter semantics beyond what the schema provides.
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 tests IMAP and SMTP connectivity to a specific server (mail.privateemail.com). The verb 'test' and resource 'connectivity' are specific, and it distinguishes from sibling tools that perform email operations.
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 before other email operations to verify connectivity, but it does not explicitly state when or when not to use it, nor does it mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_draftsCRead-onlyIdempotent
List messages in the Drafts folder.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description merely restates that it lists messages, adding no behavioral context beyond what annotations provide.
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, concise and front-loaded. However, it is too minimal, lacking essential information about parameters and usage.
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 one parameter and sibling tools that could be confused, the description is incomplete. It does not clarify what 'messages' means or how results are structured, and no information about output is provided.
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 0% coverage (no descriptions) and the tool description does not mention the 'limit' parameter. The agent receives no guidance on how to use the parameter.
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 messages in the Drafts folder' clearly states the verb (list) and resource (messages in Drafts folder), distinguishing it from siblings like list_emails or search_emails. However, it could specify 'draft emails' for clarity.
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 list_emails or search_emails. No explicit when-to-use or when-not-to-use context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emailsBRead-onlyIdempotent
List recent email summaries in a folder.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages to return | |
| since | No | Optional YYYY-MM-DD lower bound | |
| folder | No | IMAP folder, e.g. INBOX, Sent, Drafts | INBOX |
| unread_only | No | Only unread messages |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds 'recent summaries', but lacks details on ordering, pagination, or what 'summaries' include. Adequate but adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 5-word sentence is concise but arguably too terse for a 4-parameter tool. It front-loads the verb but could be more informative 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?
Given the presence of an output schema and parameter descriptions, the description is minimally complete. However, it omits key context like default ordering, time range for 'recent', and whether deleted/moved messages are excluded.
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%, with all parameters described in the schema. The description does not add any additional parameter information, meeting the baseline but providing no extra 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 states the tool lists email summaries in a folder. It uses specific verb+resource and is distinct from siblings like 'get_email' (full email) or 'search_emails' (query-based), but does not explicitly differentiate itself.
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 like 'search_emails' or 'list_drafts'. The description provides no context for appropriate usage or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_foldersARead-onlyIdempotent
List IMAP folders in the PrivateEmail mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds no additional behavioral context beyond stating the action. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that conveys the tool's function with no extraneous information. Every word earns its place.
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 (no parameters, read-only, output schema present), the description is fully complete. It covers all necessary context for an AI agent to invoke the tool correctly.
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 and 100% schema coverage. Per rubric, baseline is 4. The description adds nothing beyond the schema, which is acceptable.
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 'List IMAP folders in the PrivateEmail mailbox,' specifying the verb (list), resource (URLs folders), and scope (PrivateEmail). It distinguishes effectively from sibling tools like list_emails and list_drafts.
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 when to use (to list folders) but provides no explicit guidance on when not to use it or alternatives. For a straightforward read tool, this is adequate but lacks comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_emailAIdempotent
Mark email read/unread and/or flagged/unflagged.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | IMAP UID | |
| read | No | True=read, False=unread | |
| folder | No | IMAP folder | INBOX |
| flagged | No | True=flag, False=unflag |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=true. Description adds that it marks read/unread and flagged/unflagged, which matches the modification intent but doesn't add behavioral context beyond annotations (e.g., side effects on missing emails).
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 of 8 words with no waste. Efficiently communicates the core action.
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 schema covers all parameters and annotations provide safety info, the description is complete enough for a simple status-modification tool. Return value not explained but output schema exists.
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?
Input schema covers 100% of parameters with descriptions. The description only adds 'and/or' to indicate combinability, which is marginal value. 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?
Description clearly states the tool marks email read/unread and flagged/unflagged with a specific verb and resource. It distinguishes from sibling tools like move, copy, delete, and others by focusing on status changes.
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 when to mark vs. move or delete. No exclusions or when-not scenarios mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_emailB
Move an email to another folder.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | IMAP UID | |
| folder | No | Source folder | INBOX |
| dest_folder | Yes | Destination folder |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds no extra context about what 'move' implies (e.g., removal from source, permissions, or reversibility). With annotations carrying the burden, the description fails to add value.
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?
A single, concise sentence with no wasted words. It efficiently communicates the core action.
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 mutation tool with no output schema details provided (though it exists), the description is minimal. It does not explain behavior regarding source deletion, permissions, or error handling. More context is needed for a complete definition.
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%, so baseline 3. The description does not add any additional meaning to parameters beyond what the schema provides. No explanation of the source folder or the effect of moving.
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 an email to another folder.' uses a specific verb ('Move') and resource ('email'), clearly distinguishing it from sibling tools like copy_email or delete_email. No 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?
No guidance on when to use this tool versus alternatives like copy_email or delete_email. The description lacks any context or exclusion criteria, 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.
rename_folderA
Rename an IMAP folder.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | New folder name | |
| old_name | Yes | Current folder name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's not read-only and not destructive. The description adds the fact that it's an IMAP folder rename, which implies mutation without destruction. No additional behavioral details beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (4 words) and front-loaded. While it is not verbose, it could include a bit more context without sacrificing conciseness.
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 low complexity (2 params, no enums, has output schema, annotations present), the description is minimally adequate. It does not mention return values (covered by output schema) but lacks context about side effects or prerequisites.
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%, with descriptions for old_name and new_name. The description adds no extra meaning beyond what the schema provides, meeting the baseline.
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 'Rename an IMAP folder' clearly states the verb (rename) and resource (IMAP folder), distinguishing it from sibling tools like create_folder, delete_folder, and list_folders.
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 when to use (when renaming a folder) but provides no explicit guidance on when not to use or alternatives. It lacks context about prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_emailA
Reply to an email by UID. Sets In-Reply-To and References for threading.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | IMAP UID to reply to | |
| html | No | HTML reply body | |
| text | No | Plain-text reply body | |
| folder | No | IMAP folder | INBOX |
| reply_all | No | Include original To/Cc |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds that the tool sets In-Reply-To and References headers for threading, providing behavioral context beyond annotations which already indicate non-readonly, non-destructive mutation.
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, efficient sentence that front-loads the action and key threading behavior, with no wasted words.
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 presence of an output schema and 100% schema coverage, the description adequately captures the essential behavior, though it could mention how body content (html/text) is handled.
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?
All parameters are fully described in the schema (100% coverage), so the tool description does not add additional parameter-level meaning beyond what is already provided.
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 'Reply to an email by UID' and mentions threading behavior, uniquely distinguishing it from siblings like send_email and forward_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?
The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., forward_email or send_email), only implying usage through its name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_draftA
Save a draft into the Drafts IMAP folder.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Comma-separated CC | |
| to | Yes | Comma-separated recipients | |
| html | No | HTML body | |
| text | No | Plain-text body | |
| subject | Yes | Subject |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds the key behavioral detail of saving 'into the Drafts IMAP folder,' which provides context beyond the annotations.
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 with no redundancy. It front-loads the action and resource, making it immediately clear.
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 save operation with an existing output schema, the description is adequate. It covers the primary purpose and destination, though it could mention return behavior (e.g., draft ID) but is not required due to the 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?
Schema coverage is 100%, so the description does not need to explain parameters further. It adds no additional meaning beyond what the input schema already provides, meeting the baseline of 3.
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 explicitly states the action ('Save a draft') and the target location ('into the Drafts IMAP folder'), clearly distinguishing it from sibling tools like list_drafts (list) or send_draft (send).
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 tool is for saving drafts, but it does not provide explicit guidance on when to use it versus alternatives (e.g., send_draft) or mention any prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_emailsARead-onlyIdempotent
Search emails with IMAP criteria. Dates are YYYY-MM-DD.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Body contains | |
| text | No | Anywhere in message | |
| after | No | YYYY-MM-DD | |
| limit | No | ||
| before | No | YYYY-MM-DD | |
| folder | No | IMAP folder | INBOX |
| unread | No | True=unread, False=read | |
| subject | No | Subject contains | |
| to_addr | No | To contains | |
| from_addr | No | From contains |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the description's addition of 'IMAP criteria' is minimal context. The description does not contradict annotations, but adds little beyond stating the search nature.
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?
Extremely concise: one sentence plus a date format note. Every part is necessary and front-loaded. No wasted words.
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 search tool with 10 parameters and an output schema, the description provides essential context (IMAP search, date format). With annotations covering safety, this is mostly complete, though a note on common usage would help.
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?
Input schema has 90% coverage of parameter descriptions. The description adds the date format 'YYYY-MM-DD' which is already stated in after/before parameter descriptions. No extra semantic value beyond 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 'Search emails with IMAP criteria' clearly states the tool's action and resource. It distinguishes from sibling tools like list_emails (listing without search) and get_email (single email retrieval).
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 filtering emails with IMAP criteria, but does not explicitly state when to use this tool versus alternatives like list_emails or search-related tools. No when-not-to-use guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_draftB
Send a draft by UID from Drafts, then move it to Trash.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Draft IMAP UID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the draft is moved to Trash after sending, which is a destructive action, but the annotation `destructiveHint` is false. This is a direct contradiction, indicating serious inconsistency.
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?
Extremely concise: a single sentence that conveys the core action and outcome with no unnecessary words.
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 description is incomplete given the contradiction and lack of detail about side effects or the output schema. For a simple tool with one parameter, it should provide more clarity about behavior.
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%, and the parameter `uid` is described in the schema as 'Draft IMAP UID'. The description adds no additional semantic meaning beyond this.
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 'Send' and resource 'draft by UID', and adds the post-action 'move to Trash', making it distinct from siblings like `save_draft` or `list_drafts`.
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 on when to use this tool versus alternatives such as `send_email` or `save_draft`. The description does not mention prerequisites or contexts where this tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailA
Send an email via PrivateEmail SMTP. Prefer reply_email for threaded replies.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Comma-separated CC | |
| to | Yes | Comma-separated recipients | |
| bcc | No | Comma-separated BCC | |
| html | No | HTML body | |
| text | No | Plain-text body | |
| subject | Yes | Subject line | |
| reply_to | No | Reply-To address | |
| references | No | Space-separated Message-IDs | |
| in_reply_to | No | In-Reply-To Message-ID | |
| attachment_paths | No | Comma-separated local file paths |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write, non-destructive, non-idempotent operation. The description adds the SMTP protocol detail but does not elaborate on behaviors like error handling, rate limits, or attachment limits. With annotations covering the safety profile, the description adds minimal extra context.
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: two sentences. The first sentence states the primary purpose, and the second provides a key usage guideline. No wasted words.
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 10 parameters, all described in the schema, and an output schema exists (not shown but noted), the description is nearly complete. It misses some details like return value or attachment processing, but the core functionality 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?
Schema description coverage is 100%, so all parameters are already documented. The description does not add any additional meaning beyond the schema, hence baseline score of 3.
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 sends an email via PrivateEmail SMTP, specifying the verb 'send' and the resource 'email'. It distinguishes from siblings by explicitly recommending 'reply_email' for threaded replies.
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 explicit guidance: 'Prefer reply_email for threaded replies', indicating when not to use this tool and offering an alternative. This helps the agent choose correctly.
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.
21 tool updates
v1.1.0- First observed
account_info - First observed
copy_email - First observed
create_folder - First observed
delete_email - First observed
delete_folder - First observed
download_attachment - First observed
forward_email - First observed
get_email - First observed
get_thread - First observed
health_check - First observed
list_drafts - First observed
list_emails - First observed
list_folders - First observed
mark_email - First observed
move_email - First observed
rename_folder - First observed
reply_email - First observed
save_draft - First observed
search_emails - First observed
send_draft - First observed
send_email
TDQS
Each tool targets a distinct operation: listing, searching, reading, sending, replying, forwarding, managing drafts, moving, copying, deleting, marking, and folder CRUD. No two tools appear to do the same thing, and descriptions clearly differentiate them.
All tools follow a consistent verb_noun pattern (e.g., list_emails, send_email, create_folder). The only slight deviation is health_check and account_info, but they still clearly convey their purpose and do not break the overall pattern.
21 tools is appropriate for an email server. It covers essential operations (read, send, reply, forward, manage drafts, move, copy, delete, mark, search) plus folder management and diagnostics, without being excessive.
The tool set covers the core email lifecycle: list, get, search, send, reply, forward, drafts, folder management. Minor gaps exist, such as no explicit tool to send an email with attachments or to list attachments independently, but these are possible through existing tools (send_email may support attachments, and get_email provides attachment metadata).
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
A MCP server for Gmail that lets you search, read, and draft emails and replies.
MCP server for MailTempo's public free temporary email inboxes.
Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.
An MCP server that provides email capabilities, hosted on Alpic platform
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server for email operations supporting IMAP and SMTP protocols, enabling sending, receiving, searching, and managing emails with attachments.1MIT
- AlicenseBqualityCmaintenanceUniversal IMAP/SMTP MCP server that works with any email provider, providing tools to read, search, send, and manage emails.103841MIT
- 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
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/ciphersolutions-dev/private-email-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server