MCP Email Service
The MCP Email Service is a multi-account IMAP/SMTP email management system with local caching and AI integration capabilities.
Email Operations: List, view, search, send, reply to, and forward emails with attachment support. Mark emails as read/unread, delete (to trash or permanently), flag/star, and move between folders—all with single or batch operations. Filter by unread status, folders, date ranges, sender/recipient, and pagination.
Account & Folder Management: Manage multiple email providers (Gmail, Outlook, QQ Mail, 163 Mail, custom IMAP). List configured accounts, folders/labels, unread counts per folder, and test IMAP/SMTP server connections.
Attachments & Headers: Download email attachments and fetch email headers without downloading full message content.
Synchronization & Caching: Sync emails to local database for offline access and faster operations. Control sync scheduling (start/stop, force sync), monitor sync health and history, configure sync intervals and cleanup policies, and view connection pool statistics for IMAP connection reuse.
Contact Analysis: Analyze communication patterns, contact frequency, and timeline history using cached data.
System Information: Access service version information, git commit details, and recent synchronization activity logs.
AI Integration: Structured JSON outputs for AI agents and OpenClaw skill integration for automated workflows.
Enables management of Gmail accounts including reading, searching, sending, and organizing emails, with support for attachments, folders, and contact analysis.
Provides workflow automation for email monitoring with AI-powered filtering and multi-platform notifications through n8n workflow templates.
Powers AI-based email filtering, translation, summarization, and intelligent monitoring to identify important emails and generate automated responses.
Sends rich formatted email notifications and alerts to Slack channels with block-based formatting for monitored emails.
Delivers styled email notifications to WeChat Work with color coding for AI-monitored important emails.
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., "@MCP Email Serviceshow me unread emails from the last 24 hours"
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.
Mailbox CLI
CLI-first email management for multi-account IMAP/SMTP with a local sync cache.
Primary interface: the mailbox CLI (Node.js implementation). This repo ships
prebuilt platform binaries via npm (no Python required for end users).
Supported Providers
163 Mail (mail.163.com / mail.126.com)
QQ Mail (mail.qq.com)
Gmail (mail.google.com)
Outlook/Hotmail
Custom IMAP servers
Related MCP server: Email SMTP/IMAP MCP Server
Install
From GitHub Releases (recommended — no npm, no Node)
curl -fsSL https://raw.githubusercontent.com/leeguooooo/Mailbox/main/install.sh | sh
mailbox --helpDownloads the prebuilt binary for your platform (macOS arm64/x64, Linux x64) from the
latest GitHub Release, verifies its
checksum, and installs to ~/.local/bin. Pin a version with MAILBOX_VERSION=v2.11.2, or
change the dir with MAILBOX_INSTALL_DIR=....
npm (deprecated)
npm install -g @leeguoo/mailbox-cli # may lag the GitHub Releases; prefer the installer aboveThe npm registry is no longer the primary channel — releases ship as GitHub Release binaries.
As an AI Skill (Claude Code / Cursor / etc.)
# Project scope — installs into ./.claude/skills/mailbox (or ./.cursor/skills/...):
npx skills add leeguooooo/Mailbox --skill mailbox
# User scope — installs into ~/.claude/skills/mailbox:
npx skills add leeguooooo/Mailbox --skill mailbox -gThe skill assumes the CLI is on PATH (install via the curl … install.sh | sh above).
For the biggest speedup also run mailbox daemon install once.
MCP server (Claude Desktop / Code / Cursor)
mailbox mcp config --json # prints a paste-ready mcpServers entryFrom source (development)
pnpm install
pnpm test
# build a local platform binary into mailbox-cli/packages/<platform>/bin/mailbox
pnpm build:binaryConfigure accounts
mkdir -p ~/.config/mailbox
cp examples/accounts.example.json ~/.config/mailbox/auth.jsonConfig locations:
Credentials:
~/.config/mailbox/auth.jsonOther settings:
~/.config/mailbox/config.toml
Common commands
# CLI help
mailbox --help
# list accounts
mailbox account list --json
# list unread emails (cache by default; --from filters cache-side)
mailbox email list --unread-only --limit 20 --json
mailbox email list --account-id my_account_id --from "newsletter" --json
# show one email (response includes list_unsubscribe when the header is set)
mailbox email show 123456 --account-id my_account_id --json
# mark read (use --dry-run to validate first)
mailbox email mark 123456 --read --account-id my_account_id --folder INBOX --dry-run --json
mailbox email mark 123456 --read --account-id my_account_id --folder INBOX --confirm --json
# delete
mailbox email delete 123456 --account-id my_account_id --folder INBOX --confirm --json
# bulk mutate by sender or subject (no UID list needed)
mailbox email mark --from "support@npmjs.com" --read --confirm --account-id my_account_id --json
mailbox email delete --from "newsletter" --account-id my_account_id --json # dry-run preview
mailbox email delete --subject "[ad]" --account-id my_account_id --confirm --jsonCache + sync
Cache DB default:
~/.local/share/mailbox/email_sync.dbListing uses cache by default where possible. Add
--liveto force IMAP.
mailbox sync status --json
mailbox sync force --json
mailbox sync init
mailbox sync daemonAI usage guide
If you're integrating this CLI into an AI agent, start here:
docs/AI_SKILL_MAILBOX_CLI.md
OpenClaw integration
This repo includes an OpenClaw skill at skills/mailbox/SKILL.md.
OpenClaw loads skills from:
<workspace>/skills~/.openclaw/skills
Quick link helper (symlink into ~/.openclaw/skills):
./scripts/link_openclaw_skill.shForce replace an existing link:
./scripts/link_openclaw_skill.sh --forceTo use this repo without copying files, add the repo skills directory to
skills.load.extraDirs in ~/.openclaw/openclaw.json:
{
"skills": {
"load": {
"extraDirs": [
"/path/to/mcp-email-service/skills"
]
}
}
}OpenClaw handles channel delivery and scheduling; mailbox returns structured JSON outputs and optional text summaries.
Verify OpenClaw picked up the skill:
openclaw skills list --eligible
openclaw skills checkContract
docs/CLI_JSON_CONTRACT.md
Built by leeguooooo — field notes on AI agents, reverse engineering & Cloudflare Workers at blog.misonote.com · follow on X @leeguooooo
Available Tools
29 toolsanalyze_contactsA
Analyze contact frequency and communication patterns using the local sync database. Works only after emails have been synchronized to the cache.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Account ID to analyze (optional, default: all accounts) | |
| days | No | Number of days to analyze (default: 30) | |
| limit | No | Top N contacts to return (default: 10) | |
| group_by | No | Group by sender/recipient/both (default: both) | both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the dependency on cached data ('Works only after emails have been synchronized to the cache'), which is useful context. However, it lacks critical behavioral details: it doesn't specify if this is a read-only operation, what the output format looks like (no output schema exists), whether it's computationally intensive, or if there are rate limits. For an analytical tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, and the second adds crucial usage context. Both sentences earn their place by providing essential information without redundancy or fluff. It's efficient and well-structured for quick comprehension.
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 complexity (analytical tool with 4 parameters) and the absence of both annotations and an output schema, the description is moderately complete. It covers the purpose and a key prerequisite, but lacks details on behavioral traits (e.g., read-only status, performance) and output format. Without an output schema, the description should ideally hint at return values, but it doesn't. This leaves gaps that could hinder an agent's effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the input schema (e.g., 'Account ID to analyze (optional, default: all accounts)'). The description adds no parameter-specific information beyond what the schema provides. According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no param info in the description, which applies here.
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: 'Analyze contact frequency and communication patterns using the local sync database.' It specifies the verb ('analyze') and resource ('contact frequency and communication patterns'), and distinguishes it from siblings like get_contact_timeline or list_emails by focusing on analytical aggregation rather than raw data retrieval. However, it doesn't explicitly differentiate from all potential analytical siblings (none are listed), keeping it at 4 rather than 5.
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 clear context for when to use the tool: 'Works only after emails have been synchronized to the cache.' This indicates a prerequisite (sync completion) and implicitly suggests alternatives like sync_emails or get_sync_health if data isn't ready. However, it doesn't explicitly state when NOT to use it (e.g., for real-time analysis) or name specific alternatives for overlapping functions, preventing a score of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_delete_emailsC
Delete multiple emails (move to trash or permanently delete)
| Name | Required | Description | Default |
|---|---|---|---|
| email_ids | Yes | List of email IDs to delete | |
| folder | No | Source folder (default: 'INBOX') | INBOX |
| permanent | No | Permanently delete instead of moving to trash | |
| trash_folder | No | Trash folder name (default: 'Trash') | Trash |
| account_id | No | Specific account ID (recommended) | |
| dry_run | No | If true, only validate without executing (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the two deletion modes (trash vs. permanent), which is useful, but lacks critical details: it doesn't specify permissions required, whether deletions are reversible, potential rate limits, error handling for invalid IDs, or what happens if the operation fails partially. For a destructive batch operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Delete multiple emails') and adds essential qualification ('move to trash or permanently delete'). There is no wasted verbiage, making it highly concise and well-structured for quick comprehension.
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 complexity (destructive batch operation with 6 parameters), lack of annotations, and no output schema, the description is insufficient. It should address safety considerations (e.g., irreversible deletion with 'permanent'), error scenarios, and expected outcomes. The current description leaves too many behavioral aspects ambiguous for a tool of this nature.
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 thoroughly (e.g., 'email_ids' as list of IDs, 'permanent' for deletion mode). The description adds minimal value by hinting at the 'permanent' parameter's effect, but doesn't provide additional syntax, format, or usage context beyond what's in the schema. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete multiple emails') and distinguishes between two deletion modes ('move to trash or permanently delete'), which is specific and informative. However, it doesn't explicitly differentiate from sibling tools like 'delete_email' or 'delete_emails' (singular vs. plural naming suggests batch vs. single operations, but this isn't stated in the description).
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 'delete_email' or 'delete_emails' (both siblings), nor does it mention prerequisites, exclusions, or specific contexts. It only describes what the tool does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_mark_readC
Mark multiple emails as read
| Name | Required | Description | Default |
|---|---|---|---|
| email_ids | Yes | List of email IDs to mark as read | |
| folder | No | Email folder (default: 'INBOX') | INBOX |
| account_id | No | Specific account ID (required for safety) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It doesn't mention permissions required, whether the operation is reversible, rate limits, error conditions, or what happens to emails in different folders. For a mutation tool with zero annotation coverage, this is insufficient.
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 states exactly what the tool does with zero wasted words. It's appropriately sized for a straightforward tool and front-loads the core functionality.
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 3 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what 'mark as read' means operationally, what the response looks like, error handling, or how it differs from similar siblings. The agent would need to guess important behavioral aspects.
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 documented in the schema itself. The description doesn't add any meaning beyond what's already in the schema (e.g., it doesn't explain email ID format, folder implications, or account_id safety rationale). Baseline 3 is appropriate when the schema does the heavy lifting.
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 ('mark') and resource ('multiple emails') with the specific action ('as read'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'mark_email_read' or 'mark_emails', which appear to have similar functionality, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'mark_email_read' (single email) or 'mark_emails' (unspecified marking). There's no mention of prerequisites, context, or exclusions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_connectionB
Test email server connections (IMAP and SMTP) for all configured accounts using stored credentials.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool tests connections using stored credentials, implying a read-only diagnostic operation, but lacks details on permissions needed, rate limits, whether it's destructive, or what the output format might be. For a tool with zero annotation coverage, this is insufficient 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 a single, efficient sentence that directly states the tool's purpose without any redundant or unnecessary information. It is front-loaded and appropriately sized for a zero-parameter tool, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of testing email server connections, the lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the test entails, what results to expect (e.g., success/failure status, error details), or behavioral aspects like timeouts or side effects. This leaves significant gaps for the agent to understand the tool's full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. A baseline score of 4 is given as it handles the lack of parameters correctly without introducing confusion.
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 ('Test email server connections') and the resource ('IMAP and SMTP for all configured accounts'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_sync_health' or 'get_connection_pool_stats', which might also involve connection-related checks, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., stored credentials must be set up), exclusions, or compare it to siblings like 'get_sync_health' for health checks or 'list_accounts' for account status. This leaves the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_emailA
Delete a single email (move to trash or permanently delete). account_id optional but recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | Email ID to delete | |
| folder | No | Source folder (default: 'INBOX') | INBOX |
| permanent | No | Permanently delete instead of moving to trash | |
| trash_folder | No | Trash folder name (default: 'Trash') | Trash |
| account_id | No | Specific account ID (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the action (delete), options (move to trash or permanent deletion), and a recommendation for account_id. However, it misses details like permissions needed, error handling, or confirmation prompts, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action in the first clause and efficiently adds crucial details in a second clause. Every sentence earns its place with zero waste, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a mutation tool. It covers the basic action and key parameter guidance but lacks details on behavioral outcomes, error cases, or return values, leaving the agent with significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds minimal value beyond the schema by implying account_id's optionality and recommendation, but doesn't explain parameter interactions or semantics further. Baseline 3 is appropriate as the schema does the heavy lifting.
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 ('delete') and resource ('a single email'), specifying it can move to trash or permanently delete. It distinguishes from sibling tools like 'batch_delete_emails' by emphasizing 'single' and from 'delete_emails' (plural) by its singular focus.
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 clear context with 'account_id optional but recommended,' guiding when to include this parameter. However, it lacks explicit alternatives (e.g., when to use 'batch_delete_emails' vs. this tool) or exclusions, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_emailsA
Delete one or more emails (move to trash or permanently delete). Provide account_id or email_accounts mapping so each UID can be routed to the right mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| email_ids | Yes | List of email IDs to delete | |
| folder | No | Source folder (default: 'INBOX') | INBOX |
| permanent | No | Permanently delete instead of moving to trash | |
| trash_folder | No | Trash folder name (default: 'Trash') | Trash |
| account_id | No | Specific account ID (recommended; required when not using email_accounts) | |
| dry_run | No | If true, only validate without executing (default: false) | |
| email_accounts | No | Optional per-email account mapping for multi-account operations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the destructive action ('delete', 'move to trash', 'permanently delete') and routing requirements, but lacks details on permissions needed, error handling, rate limits, or what happens if emails are already deleted. For a destructive tool, this is insufficient.
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 appropriately sized with two sentences that are front-loaded with the core purpose. The first sentence states the action, and the second provides critical routing information, 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 destructive tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on return values, error conditions, side effects, or prerequisites beyond routing. The agent would struggle to use this tool safely and effectively without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds minimal value beyond the schema by hinting at the account routing logic ('Provide account_id or email_accounts mapping'), but doesn't explain parameter interactions or semantics not covered in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('delete', 'move to trash', 'permanently delete') and resources ('emails'), distinguishing it from siblings like 'delete_email' (singular) and 'batch_delete_emails' by specifying it handles one or more emails with routing logic.
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 clear context about when to use this tool by specifying the need for account routing ('Provide account_id or email_accounts mapping'), but it doesn't explicitly mention when not to use it or name alternatives like 'delete_email' for single emails or 'batch_delete_emails' for bulk operations without routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flag_emailA
Flag/star or unflag an email. Runs against the live mailbox—account_id recommended to avoid cross-account lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | Email ID to flag/unflag | |
| flag_type | Yes | Flag category to apply | |
| set_flag | No | Set to true to add the flag or false to remove it | |
| folder | No | Email folder | INBOX |
| account_id | No | Specific account ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about the tool running 'against the live mailbox' and the recommendation for account_id, which hints at real-time effects and potential multi-account issues. However, it lacks details on permissions, rate limits, or error handling, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first clause and follows with operational context in a second sentence. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is somewhat complete but has gaps. It covers the action and some behavioral context but lacks details on return values, error cases, or full usage scenarios, which could hinder agent effectiveness in edge cases.
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 thoroughly. The description does not add any additional meaning or clarification beyond what the schema provides, such as explaining flag_type semantics or folder implications. Baseline 3 is appropriate as the schema handles the heavy lifting.
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 specific action ('Flag/star or unflag an email') and resource ('an email'), distinguishing it from siblings like mark_email_read or delete_email by focusing on flagging operations. It uses precise verbs and identifies the target resource without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage by noting it 'runs against the live mailbox' and recommends 'account_id to avoid cross-account lookups', which helps guide when to use it. However, it does not explicitly state when not to use it or name alternatives among siblings, such as batch operations or other email modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forward_emailC
Forward an email to other recipients using SMTP credentials of the selected account.
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | ID of email to forward | |
| to | Yes | Recipients to forward to | |
| body | No | Additional message (optional) | |
| folder | No | Folder containing original email | INBOX |
| include_attachments | No | Include original attachments | |
| account_id | No | Forward from specific account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions SMTP credentials, implying authentication needs, but lacks details on permissions, rate limits, error handling, or what happens to the original email (e.g., if it's marked as forwarded). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. It could be slightly more structured by explicitly mentioning key parameters, but it avoids waste and is appropriately sized.
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 annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, error cases, or return values, and lacks usage guidelines, making it inadequate for safe and effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't clarify parameter interactions or usage examples), meeting the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('forward an email') and resource ('email to other recipients'), specifying it uses SMTP credentials of a selected account. However, it doesn't differentiate from sibling tools like 'send_email' or 'reply_email' beyond the basic verb, missing explicit distinction.
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 such as 'send_email' or 'reply_email'. The description mentions SMTP credentials but doesn't explain prerequisites or contextual usage, leaving the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_connection_pool_statsA
Get IMAP connection pool statistics from the local sync service, including connection reuse rate and active connections (no remote calls).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a read-only operation ('Get') with local-only execution ('no remote calls'), which covers basic safety and scope. However, it doesn't disclose potential side effects, performance characteristics, authentication requirements, or rate limits, leaving some behavioral aspects unspecified for a tool that interacts with a sync service.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently communicates purpose, scope, included metrics, and key behavioral constraint ('no remote calls'). Every element earns its place with zero wasted words, making it immediately understandable without requiring parsing of unnecessary 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 tool's zero-parameter simplicity and lack of annotations/output schema, the description provides adequate coverage of what the tool does and its local scope. However, for a tool that presumably returns structured statistics data, the absence of any output information (format, example values, or interpretation guidance) represents a notable gap, especially since there's no output schema to compensate.
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 with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and instead focuses on what the tool returns (connection pool statistics), which adds value beyond the empty input 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 clearly states the specific action ('Get'), resource ('IMAP connection pool statistics'), and scope ('from the local sync service'), with additional clarifying details about what's included ('connection reuse rate and active connections') and what's excluded ('no remote calls'). It effectively distinguishes this tool from siblings like get_sync_health or check_connection by focusing on local pool metrics rather than remote connectivity or overall sync status.
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 clear context about when to use this tool by specifying it retrieves local connection pool statistics, which implies usage for monitoring internal sync service performance. However, it doesn't explicitly state when not to use it or name specific alternatives among the sibling tools, though the focus on 'local' vs 'remote' helps differentiate from tools like check_connection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contact_timelineA
Get communication timeline with a specific contact from the local sync cache (no live IMAP).
| Name | Required | Description | Default |
|---|---|---|---|
| contact_email | Yes | Email address of the contact to analyze | |
| account_id | No | Account ID (optional, default: all accounts) | |
| days | No | Number of days to look back (default: 90) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the data source constraint ('local sync cache, no live IMAP'), which is valuable behavioral context. However, it doesn't mention performance characteristics, error conditions, or what the timeline output looks like (e.g., format, included metadata).
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 core purpose and includes the critical constraint about data source. Every word earns its place with no redundancy or unnecessary elaboration.
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 read-only tool with no annotations and no output schema, the description provides adequate purpose and data source context but lacks details about return format, performance, or error handling. The 100% schema coverage helps, but more behavioral transparency would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three parameters. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 for adequate coverage through structured data alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('communication timeline with a specific contact'), and distinguishes it from siblings by specifying it uses 'local sync cache (no live IMAP)', which is unique among sibling tools like get_email_detail or search_emails that might access live data.
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 clear context about when to use this tool by specifying it retrieves from 'local sync cache (no live IMAP)', implying it's for cached data analysis rather than real-time queries. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_attachmentsA
Extract attachments from an email by downloading them over IMAP. Requires a reachable mailbox and may incur network latency.
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | Email ID to get attachments from | |
| folder | No | Email folder | INBOX |
| account_id | No | Specific account ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses network latency and mailbox requirements, which are useful behavioral traits, but does not cover aspects like error handling, attachment size limits, or output format. It adequately hints at a read operation but lacks depth for a tool with potential complexities.
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 front-loaded with the core purpose in the first clause and efficiently adds two contextual sentences. Every sentence earns its place by providing essential information without redundancy, making it appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is moderately complete. It covers purpose and some behavioral context but lacks details on return values, error cases, or deeper operational constraints. For a tool with 3 parameters and potential network interactions, more information would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the three parameters. The description does not add any parameter-specific details beyond what the schema provides, such as explaining email_id format or folder options. Baseline 3 is appropriate as the schema handles the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Extract attachments') and resource ('from an email'), distinguishing it from sibling tools like get_email_detail or get_email_headers. It specifies the method ('by downloading them over IMAP'), making the purpose unambiguous and distinct.
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 clear context for when to use it ('Requires a reachable mailbox') and mentions a performance consideration ('may incur network latency'), but does not explicitly state when not to use it or name alternatives among siblings like get_email_detail for non-attachment data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_detailA
Get detailed content of a specific email including body and attachments. Requires IMAP connectivity to download the latest message content.
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | The ID of the email to retrieve | |
| folder | No | Email folder (default: 'INBOX') | INBOX |
| account_id | No | Specific account ID (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds value by specifying the requirement for IMAP connectivity and that it downloads 'latest message content,' which hints at network dependency and freshness. However, it lacks details on error handling, rate limits, permissions, or what happens if connectivity fails, leaving gaps for a tool with network operations.
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 front-loaded with the core purpose in the first sentence and adds a crucial prerequisite in the second. Both sentences earn their place by providing essential information without redundancy or fluff, making it efficiently structured and appropriately sized.
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 no annotations and no output schema, the description is moderately complete. It covers the purpose and a key prerequisite (IMAP connectivity), but for a tool that likely returns complex data (email body and attachments), it lacks details on output format, error cases, or behavioral nuances like caching or performance, leaving room for improvement in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (email_id, folder, account_id) with descriptions. The description does not add any parameter-specific semantics beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage without 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 specific action ('Get detailed content'), the resource ('a specific email'), and the scope ('including body and attachments'), which distinguishes it from sibling tools like get_email_headers (headers only) or get_email_attachments (attachments only). It uses precise verbs and resource identifiers.
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 by specifying 'Requires IMAP connectivity to download the latest message content,' which provides context about prerequisites. However, it does not explicitly state when to use this tool versus alternatives like get_email_headers or get_email_attachments, nor does it mention exclusions or direct comparisons to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_headersA
Fetch only email headers (From, To, Subject, Date, Message-ID, etc.) without downloading the body. account_id recommended so the UID lookup hits the right mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | Email ID to get headers from | |
| folder | No | Email folder (default: 'INBOX') | INBOX |
| account_id | No | Specific account ID (optional) | |
| headers | No | Specific headers to retrieve (optional, default: common headers like From, To, Subject, Date, Message-ID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool fetches headers without downloading the body (clarifying scope) and mentions the account_id recommendation for accurate mailbox targeting. However, it lacks details on permissions needed, rate limits, error conditions, or what the return format looks like (e.g., JSON structure).
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 two sentences, front-loaded with the core purpose and followed by a practical tip. Every word earns its place, with no redundancy or fluff, making it highly efficient and easy to parse.
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 no annotations and no output schema, the description adequately covers the tool's purpose and basic usage but lacks details on behavioral aspects like authentication, error handling, or return format. For a read operation with 4 parameters, it provides enough to get started but leaves gaps in full operational understanding.
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 thoroughly. The description adds marginal value by implying that account_id helps with 'UID lookup' accuracy, but it does not provide additional syntax, format, or usage details beyond what the schema specifies. Baseline 3 is appropriate when the schema does the heavy lifting.
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 specific action ('Fetch only email headers') and resource ('email headers'), distinguishing it from siblings like get_email_detail (which presumably downloads full content) and get_email_attachments. It explicitly mentions what is excluded ('without downloading the body'), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Fetch only email headers... without downloading the body') and includes a practical recommendation ('account_id recommended so the UID lookup hits the right mailbox'). However, it does not explicitly state when NOT to use it or name specific alternatives among the siblings (e.g., get_email_detail for full content).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_activityB
Return recent sync activity/health per account based on local cache data.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Get activity for specific account (optional, default: all accounts) | |
| include_stats | No | Include detailed statistics (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'based on local cache data' which provides useful context about the data source, but doesn't describe what 'recent' means (timeframe), whether this is a read-only operation, what permissions are required, or what the output format looks like. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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 gets straight to the point. Every word earns its place - 'return' (action), 'recent sync activity/health' (what), 'per account' (scope), 'based on local cache data' (source). There's no wasted verbiage or unnecessary elaboration.
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 annotations and no output schema, the description provides basic but incomplete context. It covers the core purpose and data source, but doesn't explain what 'activity/health' entails, what timeframe 'recent' covers, or what the return values look like. For a tool with 2 parameters and no structured behavioral hints, this is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with both parameters ('account_id' and 'include_stats') well-documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema descriptions. According to the scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('return recent sync activity/health') and resources ('per account based on local cache data'). It distinguishes from obvious siblings like 'get_sync_health' and 'get_sync_history' by specifying 'recent' and 'based on local cache data', but doesn't explicitly differentiate from all possible alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_sync_health' or 'get_sync_history'. It mentions 'recent' and 'local cache data' which imply some context, but doesn't explicitly state when this tool is preferred or when other tools should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sync_healthA
Get sync health status for all accounts or a specific account based on cached sync metrics (no live IMAP).
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Get health for specific account (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully adds that the tool uses 'cached sync metrics (no live IMAP)', clarifying it doesn't perform live checks. However, it doesn't describe the return format, whether it requires specific permissions, rate limits, or error conditions, leaving gaps for a read operation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and includes a critical behavioral detail ('no live IMAP'). Every word earns its place with no redundancy or fluff, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (read operation with one optional parameter), no annotations, and no output schema, the description is partially complete. It covers the purpose and a key behavioral trait but lacks details on return values, error handling, or permissions. This is adequate but has clear gaps for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds value by explaining the optional parameter's semantics: 'for all accounts or a specific account', which clarifies that omitting 'account_id' returns health for all accounts. This goes beyond the schema's 'optional' note, earning a higher score.
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: 'Get sync health status for all accounts or a specific account based on cached sync metrics (no live IMAP).' It specifies the verb ('Get'), resource ('sync health status'), and scope ('all accounts or a specific account'), but doesn't explicitly differentiate from sibling tools like 'get_sync_history' or 'check_connection', which prevents a perfect score.
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 context by mentioning 'cached sync metrics (no live IMAP)', suggesting this is for checking historical/background sync status rather than real-time connectivity. However, it doesn't provide explicit guidance on when to use this versus alternatives like 'check_connection' or 'get_sync_history', nor does it state any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sync_historyB
Get synchronization history for all accounts or a specific account within specified hours from the local sync logs.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Filter by account ID (optional) | |
| hours | No | Number of hours to look back (default: 24) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it retrieves data 'from the local sync logs,' implying read-only access, but doesn't disclose behavioral traits like authentication requirements, rate limits, data format, pagination, or error conditions. For a tool with no annotation coverage, this is insufficient.
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 purpose and includes key details (scope, filtering, source). There is no wasted verbiage, and it's appropriately sized for the tool's complexity.
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 no annotations, no output schema, and a read-focused tool, the description is incomplete. It lacks details on return values (e.g., format, structure), error handling, or operational constraints. For a tool with 2 parameters and no structured output, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (account_id and hours) well-documented in the schema. The description adds minimal value beyond the schema, mentioning 'specific account' and 'specified hours' but not elaborating on semantics. Baseline 3 is appropriate as the schema does the heavy lifting.
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 ('Get synchronization history') and resource ('from the local sync logs'), specifying scope ('for all accounts or a specific account within specified hours'). It distinguishes from siblings like get_sync_health or get_recent_activity by focusing on sync logs, but doesn't explicitly differentiate from them.
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 needing sync history data, with optional filtering by account and time. However, it doesn't provide explicit guidance on when to use this versus alternatives like get_recent_activity or get_sync_health, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionB
Get MCP Email Service version and git commit
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read-only operation, it doesn't specify whether this requires authentication, has rate limits, returns structured data, or provides error handling. The description lacks behavioral context beyond the basic 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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.
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 low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains what the tool does but lacks details on behavioral traits, usage context, or return values, which could be helpful for an agent in a broader system.
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 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, so it appropriately avoids redundant information. A baseline of 4 is applied since no parameter details are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and the resource ('MCP Email Service version and git commit'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_sync_health' or 'get_connection_pool_stats', which also retrieve system information but about different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or exclusions, leaving the agent to infer usage based solely on the tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsB
List all configured email accounts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('List all configured email accounts') but doesn't describe what 'configured' means, whether this includes disabled or inactive accounts, the format of the returned data, pagination behavior, or any authentication requirements. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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, clear sentence: 'List all configured email accounts'. It is front-loaded with the core action and resource, with no unnecessary words or structural fluff. Every word earns its place by specifying the verb, scope ('all'), and target 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's low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on behavior, output format, or usage context. For a simple list operation, this might suffice, but the absence of any behavioral or output information leaves room for improvement in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% description coverage, so no parameter documentation is needed. The description appropriately doesn't mention parameters, as there are none to explain. This meets the baseline for tools with no parameters, where the description focuses on the tool's purpose rather than input details.
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 all configured email accounts' clearly states the verb ('List') and resource ('configured email accounts'), making the tool's purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'list_emails' or 'list_folders', but the resource specificity ('accounts' vs 'emails'/'folders') provides implicit distinction. The description is not tautological with the name 'list_accounts' as it adds 'configured email' context.
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. With siblings like 'list_emails', 'list_folders', and 'get_contact_timeline', there's no indication of when listing accounts is appropriate versus listing other resources. No prerequisites, exclusions, or comparative context are mentioned, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emailsA
List emails from inbox (supports multi-account). UIDs are scoped to each account—pass account_id for deterministic follow-up actions. Performs live IMAP fetch; failures usually indicate network or credential issues.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of emails to return (default: 50) | |
| offset | No | Number of emails to skip for pagination (default: 0) | |
| unread_only | No | Only return unread emails (default: true) | |
| folder | No | Email folder to fetch from (default: 'all' = no folder filter when using cache; falls back to INBOX for live IMAP) | all |
| account_id | No | Specific account to fetch from (optional) | |
| include_metadata | No | Include source metadata (cache/fetch) in results (default: true) | |
| use_cache | No | Use local sync cache (email_sync.db) instead of live IMAP when available |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively adds context beyond the input schema: it explains that UIDs are scoped per account for follow-up actions, performs live IMAP fetch, and that failures indicate network or credential issues. This covers key behavioral traits like data scoping, real-time operation, and error handling, though it could mention more about pagination or rate limits.
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 appropriately sized and front-loaded, with three concise sentences that each add value: stating the purpose, explaining UID scoping and account_id usage, and describing fetch behavior and failure causes. There is no wasted text, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no annotations, no output schema), the description is fairly complete. It covers purpose, multi-account support, UID semantics, and behavioral aspects like live fetching and error indications. However, without an output schema, it could benefit from more details on return values or format, slightly reducing completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing clear details for all 7 parameters. The description adds minimal parameter semantics beyond the schema, only implying the importance of 'account_id' for deterministic actions. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't significantly enhance parameter understanding.
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: 'List emails from inbox (supports multi-account).' It specifies the verb ('List') and resource ('emails from inbox'), and mentions multi-account support. However, it doesn't explicitly differentiate from sibling tools like 'search_emails' or 'list_unread_folders,' which prevents a perfect score.
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 some implied usage guidance by mentioning 'supports multi-account' and that 'UIDs are scoped to each account—pass account_id for deterministic follow-up actions.' It also hints at when to use it by describing live IMAP fetch behavior. However, it lacks explicit when-to-use vs. alternatives (e.g., 'search_emails' for filtered searches) or clear exclusions, keeping it at a moderate level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_foldersB
List all email folders/labels in the account (IMAP). Provide account_id to target a specific mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | List folders for specific account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it indicates this is a read operation ('List'), it doesn't mention important behavioral aspects like whether this requires authentication, what format the results are returned in, potential rate limits, or whether it's a complete list versus paginated results. The description provides basic functionality but lacks operational 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 with just two sentences that efficiently communicate the core functionality and parameter usage. Every word earns its place, and the information is front-loaded with the main purpose stated first followed by parameter guidance.
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 read operation with one optional parameter and no output schema, the description provides adequate basic information about what the tool does. However, it lacks details about return format, authentication requirements, and error conditions that would be helpful for an agent. The description is minimally viable but has clear gaps in operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions the 'account_id' parameter and explains its purpose ('to target a specific mailbox'), which adds semantic meaning beyond the schema's description ('List folders for specific account'). However, with 100% schema description coverage for the single parameter, the description only provides marginal additional value. The baseline of 3 is appropriate when the schema already documents parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all email folders/labels in the account') with specific technology context ('IMAP'). It distinguishes from obvious siblings like 'list_accounts' and 'list_emails' by focusing on folders/labels, but doesn't explicitly differentiate from 'list_unread_folders' which is a more specialized variant.
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 implied usage context by mentioning the optional 'account_id' parameter to target a specific mailbox, suggesting this tool can be used for both general listing and targeted operations. However, it doesn't explicitly state when to use this versus alternatives like 'list_unread_folders' or provide any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_unread_foldersA
List folders with unread counts per configured account. Requires live IMAP connectivity; returns empty list when the mailbox cannot be reached.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Get unread counts for specific account (optional, default: all accounts) | |
| include_empty | No | Include folders with zero unread emails (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the requirement for 'live IMAP connectivity' (implying network dependency and potential failure modes) and the fallback behavior ('returns empty list when the mailbox cannot be reached'). It does not cover other aspects like rate limits, authentication needs, or pagination, but provides sufficient context for safe usage.
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 two sentences long, front-loaded with the core purpose and followed by important behavioral context. Every sentence earns its place by providing essential information without redundancy or fluff, making it highly efficient and easy to parse.
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 moderate complexity (listing folders with counts), lack of annotations, and no output schema, the description is reasonably complete. It covers the purpose, connectivity requirements, and failure behavior. However, it does not describe the return format (e.g., structure of the list, what 'unread counts' include) or potential errors beyond connectivity issues, leaving some gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for both parameters ('account_id' and 'include_empty'). The description does not add any additional meaning beyond what the schema provides, such as explaining the format of 'account_id' or elaborating on the implications of 'include_empty'. However, with high schema coverage, a baseline score of 3 is appropriate as the schema adequately handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'folders with unread counts per configured account', making the purpose specific and actionable. It distinguishes from sibling tools like 'list_folders' (which presumably lists all folders without unread counts) and 'list_emails' (which lists emails rather than 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 provides clear context for when to use this tool ('Requires live IMAP connectivity') and what happens in edge cases ('returns empty list when the mailbox cannot be reached'). However, it does not explicitly state when NOT to use it or name specific alternatives among the sibling tools, such as 'list_folders' for a basic folder listing without unread counts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_email_readA
Mark a single email as read (account_id optional but recommended to avoid cross-account lookup).
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | Email ID to mark as read | |
| folder | No | Email folder (default: 'INBOX') | INBOX |
| account_id | No | Specific account ID (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the optional account_id recommendation but doesn't describe what 'mark as read' actually does (e.g., whether it updates email status permanently, requires specific permissions, or has side effects). For a mutation tool with zero annotation coverage, this is a significant gap in behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and includes only essential guidance about the account_id parameter. Every word earns its place with zero wasted content, making it optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is minimally complete. It covers the basic purpose and provides some parameter guidance, but lacks details about behavioral consequences, error conditions, or what happens after marking an email as read. Given the complexity of email state changes, more context would be helpful.
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 three parameters thoroughly. The description adds minimal value by emphasizing the account_id recommendation, but doesn't provide additional semantic context beyond what's in the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('mark as read'), the resource ('a single email'), and distinguishes it from sibling tools like 'batch_mark_read' and 'mark_emails' by emphasizing 'single email'. It uses a precise verb+resource combination that leaves no ambiguity about what the tool does.
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 clear context for when to use this tool by mentioning 'account_id optional but recommended to avoid cross-account lookup', which helps guide parameter usage. However, it doesn't explicitly state when to choose this tool over alternatives like 'batch_mark_read' or 'mark_emails', missing explicit sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_emailsA
Mark one or more emails as read or unread. Pass account_id when operating within a single account, or provide email_accounts mapping for mixed-account batches.
| Name | Required | Description | Default |
|---|---|---|---|
| email_ids | Yes | List of email IDs to mark | |
| mark_as | Yes | Mark emails as 'read' or 'unread' | |
| folder | No | Email folder (default: 'INBOX') | INBOX |
| account_id | No | Specific account ID (recommended; required when not using email_accounts) | |
| dry_run | No | If true, only validate without executing (default: false) | |
| email_accounts | No | Optional per-email account mapping for multi-account operations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the core mutation action (marking emails), it doesn't address important behavioral aspects like whether this requires specific permissions, what happens if emails don't exist, whether changes are reversible, or any rate limits. The description provides basic operational context but misses critical behavioral details for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place. The first sentence states the core purpose, and the second provides essential usage guidance about account handling. There's zero wasted text, and information is front-loaded appropriately.
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 6 parameters, no annotations, and no output schema, the description provides adequate basic information about what the tool does and account handling approaches. However, it lacks important contextual details about error conditions, permissions required, what the response looks like, or how it differs from similar sibling tools like 'batch_mark_read'.
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 100% schema description coverage, the baseline is 3. The description adds some value by explaining the relationship between account_id and email_accounts parameters ('Pass account_id when operating within a single account, or provide email_accounts mapping for mixed-account batches'), which helps understand when to use each approach. However, it doesn't provide significant additional parameter meaning beyond what the comprehensive schema already documents.
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 specific action ('mark one or more emails as read or unread') and resource ('emails'), distinguishing it from siblings like 'batch_mark_read' by mentioning both read/unread operations and multi-account capabilities. It provides a complete picture of the tool's function beyond just the name.
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 clear context for when to use different parameter approaches ('Pass account_id when operating within a single account, or provide email_accounts mapping for mixed-account batches'), giving practical guidance. However, it doesn't explicitly mention when NOT to use this tool or name specific alternatives among siblings like 'mark_email_read' or 'mark_email_unread'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_email_unreadB
Mark a single email as unread (account_id optional but recommended).
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | Email ID to mark as unread | |
| folder | No | Email folder (default: 'INBOX') | INBOX |
| account_id | No | Specific account ID (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it indicates this is a mutation operation ('mark as unread'), it doesn't describe what happens on success/failure, whether it requires specific permissions, or if there are rate limits. The description adds minimal behavioral context beyond the obvious 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, efficient sentence that front-loads the core action and includes a useful parameter note. There is zero waste, and every word earns its place in clarifying the tool's use.
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 annotations and no output schema, the description is adequate but has clear gaps. It covers the basic action and a parameter recommendation, but lacks details on behavioral traits, error handling, or return values. Given the complexity and missing structured data, it's minimally viable but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds marginal value by emphasizing that 'account_id' is optional but recommended, but doesn't provide additional semantic context beyond what's in the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('mark as unread') and resource ('a single email'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'mark_email_read' or 'mark_emails' (batch operation), leaving some room for improvement.
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 implied usage guidance by mentioning that 'account_id' is optional but recommended, which helps with parameter selection. However, it doesn't explicitly state when to use this tool versus alternatives like 'batch_mark_read' or 'mark_emails', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_emails_to_folderB
Move emails to a different folder. Requires IMAP access; pass account_id (or use per-email mapping in mark/delete first) so UIDs match the correct account.
| Name | Required | Description | Default |
|---|---|---|---|
| email_ids | Yes | Email IDs to move | |
| target_folder | Yes | Target folder name | |
| source_folder | No | Source folder (default: 'INBOX') | INBOX |
| account_id | No | Specific account ID (required for safety) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Requires IMAP access' and safety notes about 'account_id', but it does not cover critical aspects like whether the move is reversible, potential rate limits, error handling, or what happens if emails are already in the target folder. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main action ('Move emails to a different folder'), followed by necessary context in a single sentence. There is no wasted text, but it could be slightly more structured for clarity.
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 that this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., reversibility, side effects), error cases, and what the tool returns, which are crucial for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters (email_ids, target_folder, source_folder, account_id). The description adds minimal value by hinting at the purpose of 'account_id' for safety and matching, but it does not provide additional semantics beyond what the schema specifies, such as format details or usage examples.
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 ('move') and resource ('emails to a different folder'), making the purpose specific and understandable. However, it does not explicitly differentiate this tool from sibling tools like 'batch_delete_emails' or 'mark_emails', which might involve similar email operations but with different actions.
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 some context by mentioning 'Requires IMAP access' and hints at prerequisites like 'account_id', but it does not explicitly state when to use this tool versus alternatives (e.g., 'batch_delete_emails' for deletion or 'mark_emails' for marking). Usage is implied rather than clearly defined.
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 (preserves thread). Requires SMTP access for the originating account.
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | ID of email to reply to | |
| body | Yes | Reply body content | |
| reply_all | No | Reply to all recipients | |
| folder | No | Folder containing original email | INBOX |
| attachments | No | ||
| is_html | No | Whether body is HTML | |
| account_id | No | Reply from specific account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the prerequisite 'Requires SMTP access for the originating account,' which is useful behavioral context. However, it lacks details on permissions needed, rate limits, error handling, or what happens to the original email (e.g., marking as replied). The description doesn't contradict annotations, as none exist.
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 two sentences, front-loaded with the core purpose and followed by a prerequisite. Every word earns its place with no redundancy or waste, making it highly efficient and easy to scan.
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 complexity of a 7-parameter email reply tool with no annotations and no output schema, the description is moderately complete. It covers the purpose and a key prerequisite but lacks details on behavioral traits, parameter usage, or expected outcomes. For a mutation tool with rich parameters, more context would be beneficial to fully guide the agent.
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 high at 86%, so the baseline is 3. The description doesn't add specific meaning beyond what the schema provides, such as explaining parameter interactions or usage nuances. It mentions SMTP access, which relates to 'account_id' but isn't detailed. No parameters are explicitly discussed in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Reply to an email') and specifies the resource ('email'), distinguishing it from siblings like 'send_email' (new email) and 'forward_email' (forwarding). The phrase 'preserves thread' adds specific functionality that differentiates it from other 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 context by stating 'Requires SMTP access for the originating account,' which suggests prerequisites. However, it doesn't explicitly state when to use this tool versus alternatives like 'send_email' for new emails or 'forward_email' for forwarding, nor does it provide exclusions or clear alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_emailsB
Search emails with various criteria across all accounts or specific account. Returned UIDs must be used with the same account; specify account_id for precise targeting.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query text | |
| search_in | No | Where to search (default: 'all') | all |
| date_from | No | Start date (YYYY-MM-DD format) | |
| date_to | No | End date (YYYY-MM-DD format) | |
| folder | No | Folder to search in (default: 'all' for all folders) | all |
| unread_only | No | Only search unread emails | |
| has_attachments | No | Filter by attachment presence | |
| limit | No | Maximum results (default: 50) | |
| offset | No | Number of results to skip for pagination (default: 0) | |
| account_id | No | Search specific account only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that 'Returned UIDs must be used with the same account', which is valuable context about data consistency requirements. However, it doesn't address important behavioral aspects like whether this is a read-only operation, potential rate limits, authentication requirements, or what happens when no results are found.
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 appropriately concise with two sentences that convey essential information. The first sentence states the core purpose, and the second provides important behavioral context about UIDs and account targeting. There's no wasted verbiage, though it could be slightly more structured for clarity.
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 no output schema, the description provides basic operational context but lacks details about return format, error conditions, or result structure. The absence of annotations means the description should do more to explain the tool's behavior, especially regarding what the search returns and any limitations. It's minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so all parameters are well-documented in the schema itself. The description adds some semantic context about 'account_id for precise targeting' and the general scope of searching, but doesn't provide additional parameter meaning beyond what's already in the comprehensive schema descriptions. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Search emails with various criteria across all accounts or specific account', which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'list_emails' or 'get_recent_activity', which might offer similar functionality with different scopes or approaches.
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 some context about when to use the tool ('specify account_id for precise targeting') and mentions the scope ('across all accounts or specific account'), but doesn't explicitly guide when to choose this tool over alternatives like 'list_emails' or 'get_recent_activity'. It offers implied usage guidance rather than explicit comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailB
Send a new email with optional attachments via SMTP. Ensure the account has SMTP server configuration and valid credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email addresses | |
| subject | Yes | Email subject | |
| body | Yes | Email body content | |
| cc | No | CC recipients | |
| bcc | No | BCC recipients | |
| attachments | No | File attachments | |
| is_html | No | Whether body is HTML | |
| account_id | No | Send from specific account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions SMTP configuration and credential requirements, which is helpful context. However, it doesn't disclose critical behavioral traits like whether this is a synchronous operation, error handling, rate limits, or what happens on failure. For a mutation tool with zero annotation coverage, this is inadequate.
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?
Two concise sentences with zero waste. First sentence states the core purpose, second adds prerequisite context. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens on success/failure, return values, or important behavioral constraints. The SMTP configuration mention is helpful but insufficient given the tool's complexity and lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds minimal value beyond the schema by mentioning 'optional attachments' and SMTP context, but doesn't provide additional parameter semantics. Baseline 3 is appropriate when schema does the heavy lifting.
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 ('Send a new email') and resource ('via SMTP'), specifying optional attachments. It distinguishes from siblings like 'reply_email' or 'forward_email' by focusing on new email creation.
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 sending new emails but doesn't explicitly state when to use this vs alternatives like 'reply_email' or 'forward_email'. It mentions prerequisites (SMTP configuration, credentials) which provides some context, but lacks explicit when-not or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_emailsB
Unified email synchronization tool: start/stop scheduler, force sync, get status, search cache, manage config (action: start|stop|force|status|search|recent|config). Operates on the local sync service and databases.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to perform: start/stop scheduler, force sync, get status, search cached emails, get recent emails, or manage config | |
| full_sync | No | For 'force' action: perform full sync instead of incremental | |
| account_id | No | For 'force', 'search', 'recent': target specific account only (optional) | |
| query | No | For 'search' action: search query keywords | |
| limit | No | For 'search', 'recent' actions: maximum number of results | |
| config_updates | No | For 'config' action: configuration updates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool operates on 'local sync service and databases' which hints at system-level operations, but doesn't describe critical behaviors like whether actions are destructive (e.g., 'force' sync might overwrite data), authentication requirements, rate limits, or error handling. The description lacks details on what 'manage config' entails beyond the schema.
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 appropriately concise with two sentences: the first front-loads the tool's purpose and actions, and the second adds operational context. There's no wasted text, though it could be slightly more structured by separating action groups (e.g., control vs. query actions).
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 complexity (6 parameters, nested objects, multiple actions) and no annotations or output schema, the description is moderately complete. It covers the scope and action types but lacks details on behavioral traits, error cases, and output formats. For a multi-action tool with system-level operations, more context would be beneficial.
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 6 parameters thoroughly. The description adds minimal value beyond the schema by listing action types in parentheses, but doesn't provide additional context like parameter interdependencies or semantic nuances (e.g., how 'full_sync' interacts with 'force' action). Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is a 'Unified email synchronization tool' that performs multiple actions (start/stop scheduler, force sync, get status, search cache, manage config). It specifies the verb ('synchronization') and resource ('emails'), though it doesn't explicitly differentiate from sibling tools like 'get_sync_health' or 'get_sync_history' which might overlap in purpose.
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 context by mentioning 'Operates on the local sync service and databases,' but doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_sync_health' or 'search_emails.' It lists action types but doesn't specify prerequisites or exclusions for different actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The tool set has clear functional distinctions for core email operations like sending, replying, and listing, but there is significant overlap in batch operations (e.g., delete_email, delete_emails, batch_delete_emails) and read/unread marking tools (mark_email_read, mark_email_unread, mark_emails, batch_mark_read), which could cause confusion. Descriptions help clarify some differences, but the boundaries are not always sharp.
Most tools follow a consistent verb_noun naming pattern (e.g., list_emails, send_email, search_emails), with clear and descriptive names. There are minor deviations like get_version and check_connection, which use 'get' and 'check' instead of more specific verbs, but overall the naming is predictable and readable across the set.
With 29 tools, the count feels excessive for an email service, leading to redundancy and potential confusion. While email management can involve many operations, the set includes multiple tools for similar actions (e.g., three deletion tools), suggesting it could be streamlined without losing functionality, making it borderline heavy for the domain.
The tool set provides comprehensive coverage for email management, including CRUD operations (send, list, delete), synchronization (sync_emails), folder management (list_folders, move_emails_to_folder), contact analysis (analyze_contacts, get_contact_timeline), and health monitoring (get_sync_health, check_connection). There are no obvious gaps, and agents can handle full email workflows effectively.
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
Your unified inbox — everything that reaches you, understood and actionable from your AI assistant.
AI email inbox and sending tools with attachments, search, live events, and webhooks.
Your real Gmail, Outlook and calendars, worked as you: read, draft, send, schedule, organize.
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive email management through IMAP/SMTP protocols with tools for searching, organizing, moving, flagging, and sending emails across various email providers. Features safe preview mode for destructive operations and supports multiple email providers including Gmail, Outlook, and Chinese email services.26MIT
- AlicenseAqualityFmaintenanceEnables email management through SMTP and IMAP protocols with support for sending emails with attachments, searching and filtering messages, replying/forwarding with threading, organizing mailboxes, and managing multiple email accounts.5234MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage multiple email accounts with secure credentials, local full-text search, thread-aware replies, and automation.11MIT
- AlicenseNot gradedqualityCmaintenanceEnables unified email management across Gmail, Outlook, iCloud, and IMAP providers with tools for search, send, organize, and batch operations via natural language.397MIT
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/leeguooooo/Mailbox'
If you have feedback or need assistance with the MCP directory API, please join our Discord server