Skip to main content
Glama
ciphersolutions-dev

PrivateEmail MCP

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 993 and SMTP 465. Direct connects then hang until the client times out. Use scripts/run-mcp-with-tunnel.sh (SSH LocalForward via a host that can reach mail.privateemail.com, default ubee). The wrapper starts the tunnel and points IMAP/SMTP at 127.0.0.1:21993 / 127.0.0.1:21465 with PRIVATEEMAIL_TLS_HOSTNAME=mail.privateemail.com.

  • Fail-fast timeouts: PRIVATEEMAIL_CONNECT_TIMEOUT (default 12s) and PRIVATEEMAIL_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 tag v1.1.3 or newer (prefer v1.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_reply send compact email payloads instead of full HTML blobs

  • Sent-folder archival no longer uses fragile aioimaplib APPEND. After every SMTP send, the server archives a CRLF-normalized copy into Sent with stdlib imaplib, retries, and fails loudly if the Sent copy cannot be saved

  • send_draft rejects empty recipients or empty bodies before SMTP

  • Attachment 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 Sent folder 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_check

  • account_info

  • list_folders

  • list_emails

  • search_emails

  • get_email

  • get_thread

  • download_attachment

  • send_email

  • reply_email

  • forward_email

  • save_draft

  • list_drafts

  • send_draft

  • move_email

  • copy_email

  • delete_email

  • mark_email

  • create_folder

  • rename_folder

  • delete_folder

Resources

  • privateemail://account

  • privateemail://folders

  • privateemail://inbox/recent

  • privateemail://inbox/unread

  • privateemail://email/{folder}/{uid}

Prompts

  • summarize_inbox

  • triage_unread

  • draft_reply

  • compose_email

Requirements

  • Python 3.11 or newer

  • uv installed

  • A 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-mcp

Notes:

  • Install from tag v1.1.3 or newer (or current main after that release). Older tags still have an unpinned mcp dependency and will crash against MCP SDK 2.x.

  • --scope user installs it once for all your projects. Use --scope project if you want a repo-local setup instead.

  • Everything after the -- separator is the command Claude Code runs.

  • uvx --from git+... privateemail-mcp installs 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 sync

If 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_SSH

Direct (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-mcp

Helper 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" project

Configuration

Environment variables:

  • PRIVATEEMAIL_ADDRESS - full mailbox address

  • PRIVATEEMAIL_PASSWORD - mailbox password

  • PRIVATEEMAIL_DISPLAY_NAME - display name used for outbound mail

  • PRIVATEEMAIL_IMAP_HOST - defaults to mail.privateemail.com (use 127.0.0.1 with the tunnel)

  • PRIVATEEMAIL_IMAP_PORT - defaults to 993 (tunnel default 21993)

  • PRIVATEEMAIL_SMTP_HOST - defaults to mail.privateemail.com (use 127.0.0.1 with the tunnel)

  • PRIVATEEMAIL_SMTP_PORT - defaults to 465 (tunnel default 21465)

  • PRIVATEEMAIL_TLS_HOSTNAME - TLS SNI/cert name when host is a tunnel loopback (default inferred as mail.privateemail.com)

  • PRIVATEEMAIL_CONNECT_TIMEOUT - TCP connect timeout seconds (default 12)

  • PRIVATEEMAIL_COMMAND_TIMEOUT - IMAP/SMTP command timeout seconds (default 30)

  • PRIVATEEMAIL_TUNNEL_SSH - SSH host alias for scripts/mail-tunnel.sh (default ubee)

  • 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=10485760

Usage in Claude Code

Useful Claude Code commands:

  • claude mcp list

  • claude mcp get privateemail

  • claude mcp remove privateemail

Typical flows:

  • Read inbox: use privateemail://inbox/recent or call list_emails

  • Review unread mail: use triage_unread

  • Draft a reply: use draft_reply

  • Send a message now: use send_email

  • Reply in-thread: use reply_email

  • Save a draft: use save_draft

Development

uv sync
uv run pytest tests/ -q

Acceptance 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-mcp

PrivateEmail 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

  • .env is ignored by git

  • Consider using a dedicated mailbox or app-specific credential if your setup allows it

License

MIT

Available Tools

21 tools
account_infoA
Read-onlyIdempotent

Show configured mailbox address and server endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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

The description is a single, well-structured sentence with no wasted words. It is front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesIMAP UID
folderNoSource folderINBOX
dest_folderYesDestination folder

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives 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_folderA
Idempotent

Create an IMAP folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew folder name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_emailA
DestructiveIdempotent

Delete an email (moves to Trash unless expunge=True or already in Trash).

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesIMAP UID
folderNoIMAP folderINBOX
expungeNoPermanently delete instead of moving to Trash

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_folderB
DestructiveIdempotent

Delete an IMAP folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use 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_attachmentA
Read-onlyIdempotent

Download an attachment by part_index from get_email.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesIMAP UID
folderNoIMAP folderINBOX
save_pathNoIf set, write file here instead of returning base64
part_indexYesAttachment index from get_email

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesForward recipient(s), comma-separated
uidYesIMAP UID to forward
noteNoOptional note above forwarded content
folderNoIMAP folderINBOX

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to 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_emailA
Read-onlyIdempotent

Fetch full email by UID including text/html and attachment metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesIMAP UID
folderNoIMAP folderINBOX

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's 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.

Usage Guidelines4/5

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_threadB
Read-onlyIdempotent

Fetch a conversation thread related to the given message UID.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesIMAP UID of any message in the thread
limitNo
folderNoIMAP folderINBOX

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives 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_checkA
Read-onlyIdempotent

Test IMAP and SMTP connectivity to mail.privateemail.com.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_draftsC
Read-onlyIdempotent

List messages in the Drafts folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 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_emailsB
Read-onlyIdempotent

List recent email summaries in a folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax messages to return
sinceNoOptional YYYY-MM-DD lower bound
folderNoIMAP folder, e.g. INBOX, Sent, DraftsINBOX
unread_onlyNoOnly unread messages

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives 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_foldersA
Read-onlyIdempotent

List IMAP folders in the PrivateEmail mailbox.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_emailA
Idempotent

Mark email read/unread and/or flagged/unflagged.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesIMAP UID
readNoTrue=read, False=unread
folderNoIMAP folderINBOX
flaggedNoTrue=flag, False=unflag

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesIMAP UID
folderNoSource folderINBOX
dest_folderYesDestination folder

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_nameYesNew folder name
old_nameYesCurrent folder name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesIMAP UID to reply to
htmlNoHTML reply body
textNoPlain-text reply body
folderNoIMAP folderINBOX
reply_allNoInclude original To/Cc

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoComma-separated CC
toYesComma-separated recipients
htmlNoHTML body
textNoPlain-text body
subjectYesSubject

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_emailsA
Read-onlyIdempotent

Search emails with IMAP criteria. Dates are YYYY-MM-DD.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoBody contains
textNoAnywhere in message
afterNoYYYY-MM-DD
limitNo
beforeNoYYYY-MM-DD
folderNoIMAP folderINBOX
unreadNoTrue=unread, False=read
subjectNoSubject contains
to_addrNoTo contains
from_addrNoFrom contains

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesDraft IMAP UID

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoComma-separated CC
toYesComma-separated recipients
bccNoComma-separated BCC
htmlNoHTML body
textNoPlain-text body
subjectYesSubject line
reply_toNoReply-To address
referencesNoSpace-separated Message-IDs
in_reply_toNoIn-Reply-To Message-ID
attachment_pathsNoComma-separated local file paths

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 21 tool updatesv1.1.0
    • First observedaccount_info
    • First observedcopy_email
    • First observedcreate_folder
    • First observeddelete_email
    • First observeddelete_folder
    • First observeddownload_attachment
    • First observedforward_email
    • First observedget_email
    • First observedget_thread
    • First observedhealth_check
    • First observedlist_drafts
    • First observedlist_emails
    • First observedlist_folders
    • First observedmark_email
    • First observedmove_email
    • First observedrename_folder
    • First observedreply_email
    • First observedsave_draft
    • First observedsearch_emails
    • First observedsend_draft
    • First observedsend_email

TDQS

A3.7/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server for email operations supporting IMAP and SMTP protocols, enabling sending, receiving, searching, and managing emails with attachments.
    1
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Universal IMAP/SMTP MCP server that works with any email provider, providing tools to read, search, send, and manage emails.
    10
    384
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for managing email via IMAP/SMTP, supporting multiple accounts and tools for reading, sending, searching, and organizing emails.
    35
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server that enables email management (send, read, search, delete, etc.) via IMAP/SMTP, compatible with Gmail, Outlook, Yahoo, iCloud, and other standard mail servers.
    11
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ciphersolutions-dev/private-email-mcp'

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