Skip to main content
Glama
leeguooooo

MCP Email Service

by leeguooooo

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

curl -fsSL https://raw.githubusercontent.com/leeguooooo/Mailbox/main/install.sh | sh
mailbox --help

Downloads 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 above

The 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 -g

The 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 entry

From source (development)

pnpm install
pnpm test

# build a local platform binary into mailbox-cli/packages/<platform>/bin/mailbox
pnpm build:binary

Configure accounts

mkdir -p ~/.config/mailbox
cp examples/accounts.example.json ~/.config/mailbox/auth.json

Config locations:

  • Credentials: ~/.config/mailbox/auth.json

  • Other 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 --json

Cache + sync

  • Cache DB default: ~/.local/share/mailbox/email_sync.db

  • Listing uses cache by default where possible. Add --live to force IMAP.

mailbox sync status --json
mailbox sync force --json
mailbox sync init
mailbox sync daemon

AI 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.sh

Force replace an existing link:

./scripts/link_openclaw_skill.sh --force

To 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 check

Contract

  • 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 tools
analyze_contactsA

Analyze contact frequency and communication patterns using the local sync database. Works only after emails have been synchronized to the cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAccount ID to analyze (optional, default: all accounts)
daysNoNumber of days to analyze (default: 30)
limitNoTop N contacts to return (default: 10)
group_byNoGroup by sender/recipient/both (default: both)both

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idsYesList of email IDs to delete
folderNoSource folder (default: 'INBOX')INBOX
permanentNoPermanently delete instead of moving to trash
trash_folderNoTrash folder name (default: 'Trash')Trash
account_idNoSpecific account ID (recommended)
dry_runNoIf true, only validate without executing (default: false)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters 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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idsYesList of email IDs to mark as read
folderNoEmail folder (default: 'INBOX')INBOX
account_idNoSpecific account ID (required for safety)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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

For a mutation tool with 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are 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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesEmail ID to delete
folderNoSource folder (default: 'INBOX')INBOX
permanentNoPermanently delete instead of moving to trash
trash_folderNoTrash folder name (default: 'Trash')Trash
account_idNoSpecific account ID (optional)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idsYesList of email IDs to delete
folderNoSource folder (default: 'INBOX')INBOX
permanentNoPermanently delete instead of moving to trash
trash_folderNoTrash folder name (default: 'Trash')Trash
account_idNoSpecific account ID (recommended; required when not using email_accounts)
dry_runNoIf true, only validate without executing (default: false)
email_accountsNoOptional per-email account mapping for multi-account operations

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema 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.

Purpose5/5

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

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

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesEmail ID to flag/unflag
flag_typeYesFlag category to apply
set_flagNoSet to true to add the flag or false to remove it
folderNoEmail folderINBOX
account_idNoSpecific account ID

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesID of email to forward
toYesRecipients to forward to
bodyNoAdditional message (optional)
folderNoFolder containing original emailINBOX
include_attachmentsNoInclude original attachments
account_idNoForward from specific account

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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

For a mutation tool with no 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema 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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_emailYesEmail address of the contact to analyze
account_idNoAccount ID (optional, default: all accounts)
daysNoNumber of days to look back (default: 90)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesEmail ID to get attachments from
folderNoEmail folderINBOX
account_idNoSpecific account ID

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesThe ID of the email to retrieve
folderNoEmail folder (default: 'INBOX')INBOX
account_idNoSpecific account ID (optional)

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesEmail ID to get headers from
folderNoEmail folder (default: 'INBOX')INBOX
account_idNoSpecific account ID (optional)
headersNoSpecific headers to retrieve (optional, default: common headers like From, To, Subject, Date, Message-ID)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoGet activity for specific account (optional, default: all accounts)
include_statsNoInclude detailed statistics (default: true)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like '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).

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoGet health for specific account (optional)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoFilter by account ID (optional)
hoursNoNumber of hours to look back (default: 24)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of emails to return (default: 50)
offsetNoNumber of emails to skip for pagination (default: 0)
unread_onlyNoOnly return unread emails (default: true)
folderNoEmail folder to fetch from (default: 'all' = no folder filter when using cache; falls back to INBOX for live IMAP)all
account_idNoSpecific account to fetch from (optional)
include_metadataNoInclude source metadata (cache/fetch) in results (default: true)
use_cacheNoUse local sync cache (email_sync.db) instead of live IMAP when available

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoList folders for specific account

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoGet unread counts for specific account (optional, default: all accounts)
include_emptyNoInclude folders with zero unread emails (default: true)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesEmail ID to mark as read
folderNoEmail folder (default: 'INBOX')INBOX
account_idNoSpecific account ID (optional)

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a mutation tool with no 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idsYesList of email IDs to mark
mark_asYesMark emails as 'read' or 'unread'
folderNoEmail folder (default: 'INBOX')INBOX
account_idNoSpecific account ID (recommended; required when not using email_accounts)
dry_runNoIf true, only validate without executing (default: false)
email_accountsNoOptional per-email account mapping for multi-account operations

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesEmail ID to mark as unread
folderNoEmail folder (default: 'INBOX')INBOX
account_idNoSpecific account ID (optional)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a mutation tool with no 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idsYesEmail IDs to move
target_folderYesTarget folder name
source_folderNoSource folder (default: 'INBOX')INBOX
account_idNoSpecific account ID (required for safety)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesID of email to reply to
bodyYesReply body content
reply_allNoReply to all recipients
folderNoFolder containing original emailINBOX
attachmentsNo
is_htmlNoWhether body is HTML
account_idNoReply from specific account

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query text
search_inNoWhere to search (default: 'all')all
date_fromNoStart date (YYYY-MM-DD format)
date_toNoEnd date (YYYY-MM-DD format)
folderNoFolder to search in (default: 'all' for all folders)all
unread_onlyNoOnly search unread emails
has_attachmentsNoFilter by attachment presence
limitNoMaximum results (default: 50)
offsetNoNumber of results to skip for pagination (default: 0)
account_idNoSearch specific account only

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a search tool with 10 parameters and 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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email addresses
subjectYesEmail subject
bodyYesEmail body content
ccNoCC recipients
bccNoBCC recipients
attachmentsNoFile attachments
is_htmlNoWhether body is HTML
account_idNoSend from specific account

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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

For a mutation tool with no 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoAction to perform: start/stop scheduler, force sync, get status, search cached emails, get recent emails, or manage config
full_syncNoFor 'force' action: perform full sync instead of incremental
account_idNoFor 'force', 'search', 'recent': target specific account only (optional)
queryNoFor 'search' action: search query keywords
limitNoFor 'search', 'recent' actions: maximum number of results
config_updatesNoFor 'config' action: configuration updates

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

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.

Usage Guidelines3/5

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

B3.4/5.0
Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    26
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables unified email management across Gmail, Outlook, iCloud, and IMAP providers with tools for search, send, organize, and batch operations via natural language.
    397
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/leeguooooo/Mailbox'

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