Skip to main content
Glama
isityael

Apple Mail MCP Server

by isityael

Apple Mail MCP Server

License: MIT Python 3.14+ MCP GitHub stars

Star History

Star History Chart

An MCP server that gives AI assistants full access to Apple Mail -- read, search, compose, organize, and analyze emails via natural language. Built with FastMCP.

Related MCP server: cloudflare-email

Quick Start

Prerequisites: macOS with Apple Mail configured, Python 3.14+, uv

git clone https://github.com/isityael/apple-mail-mcp.git
cd apple-mail-mcp
uv sync

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "apple-mail": {
      "command": "/path/to/apple-mail-mcp/.venv/bin/python3",
      "args": ["/path/to/apple-mail-mcp/apple_mail_mcp.py"]
    }
  }
}

Restart Claude Desktop and grant Mail.app permissions when prompted.

Tip: An .mcpb bundle is also available on the Releases page for one-click install in Claude Desktop.

Codex Plugin

This repository is also a Codex plugin source. The Codex plugin manifest lives at .codex-plugin/plugin.json, bundles the Email Management skill from skills/, and exposes the Apple Mail MCP server through .mcp.json.

The bundled MCP server is local-only and macOS-specific. It launches start_mcp.sh, which uses the repo-local uv environment and requires Mail.app Automation permissions on the machine running Codex.

Forwarded optional environment variables:

Variable

Purpose

USER_EMAIL_PREFERENCES

Adds user workflow preferences to tool descriptions

APPLE_MAIL_MCP_READ_ONLY

Hides send-capable tools and blocks draft sending

Claude Desktop support remains separate: use the .mcpb bundle or explicit MCP config below.

Tools (38)

Tool

Description

get_inbox_overview

Dashboard with unread counts, folders, and recent emails

list_inbox_emails

List emails with account/read-status filtering

get_email_with_content

Search emails with full content preview

get_unread_count

Unread count per account

list_accounts

List all configured Mail accounts

get_recent_emails

Recent emails from a specific account

get_recent_from_sender

Recent emails from a sender with time-range filters

search_emails

Advanced multi-criteria search (subject, sender, dates, attachments, flag color)

search_by_sender

Find all emails from a specific sender

search_email_content

Full-text search in email bodies

search_all_accounts

Cross-account unified search

get_newsletters

Detect newsletter and subscription emails

get_email_thread

Conversation thread view

Organization

Tool

Description

list_mailboxes

Folder hierarchy with message counts

move_email

Move emails between folders (supports nested paths and exact message IDs)

update_email_status

Batch mark read/unread, flag/unflag with optional flag colors

manage_trash

Soft delete, permanent delete, empty trash

synchronize_account

Ask Mail to synchronize one account or all accounts

Composition

Tool

Description

compose_email

Send new emails (TO, CC, BCC)

reply_to_email

Reply or reply-all with optional CC/BCC

forward_email

Forward with optional message, CC/BCC

manage_drafts

Create, list, send, and delete drafts

Attachments

Tool

Description

list_email_attachments

List attachments with names and sizes

save_email_attachment

Save attachments to disk

Analytics & Export

Tool

Description

get_statistics

Email analytics (volume, top senders, read ratios)

export_emails

Export single emails or mailboxes to TXT/HTML

inbox_dashboard

Interactive UI dashboard (requires mcp-ui-server)

Configuration

User Preferences (Optional)

Set the USER_EMAIL_PREFERENCES environment variable to give the assistant context about your workflow:

{
  "mcpServers": {
    "apple-mail": {
      "command": "/path/to/venv/bin/python3",
      "args": ["/path/to/apple_mail_mcp.py"],
      "env": {
        "USER_EMAIL_PREFERENCES": "Default to BCG account, show max 50 emails, prefer Archive and Projects folders"
      }
    }
  }
}

For .mcpb installs, configure this in Claude Desktop under Developer > MCP Servers > Apple Mail MCP.

Read-Only Mode

Use --read-only to disable send-capable tools while keeping inbox, search, organization, and draft-management workflows available. In read-only mode, compose_email, reply_to_email, and forward_email are hidden, and draft sending is blocked.

{
  "mcpServers": {
    "apple-mail": {
      "command": "/path/to/venv/bin/python3",
      "args": ["/path/to/apple_mail_mcp.py", "--read-only"]
    }
  }
}

For .mcpb installs, the same behavior is available through the Read-Only Mode package setting.

HTML Compose

compose_email now supports an optional body_html parameter for rich email formatting. If body_html is omitted, the existing plain-text behavior is unchanged.

Releases

Stable releases are tag-driven. When a tag such as v2.1.2 is pushed, Woodpecker now:

  • builds a version-matched .mcpb archive

  • generates release notes from commit history

  • uploads the bundle, checksum, and notes to the GitHub release

  • updates the Homebrew tap after the GitHub release succeeds

Regular pushes to main still run CI and build verification, but they do not publish a stable GitHub release.

Safety Limits

Batch operations have conservative defaults to prevent accidental bulk actions:

Operation

Default Limit

update_email_status

10 emails

manage_trash

5 emails

move_email

1 email

Override via function parameters when needed.

Usage Examples

Show me an overview of my inbox
Search for emails about "project update" in my Gmail
Reply to the email about "Domain name" with "Thanks for the update!"
Draft an HTML email with a bold heading and a link to the project tracker
Move emails with "invoice" in the subject to my Archive folder
Show me email statistics for the last 30 days

Email Management Skill

A companion Email Management skill is included at skills/email-management/ for inbox zero, daily triage, folder organization, flag-color workflows, exact message-id moves, and account synchronization. Codex loads it through the plugin manifest. Claude Code users can install it alongside the MCP manually:

cp -r skills/email-management ~/.claude/skills/email-management

See skills/email-management/SKILL.md for details.

Requirements

  • macOS with Apple Mail configured

  • Python 3.14+

  • fastmcp (+ optional mcp-ui-server for dashboard)

  • Claude Desktop or any MCP-compatible client

  • Mail.app permissions: Automation + Mail Data Access (grant in System Settings > Privacy & Security > Automation)

Troubleshooting

Issue

Fix

Mail.app not responding

Ensure Mail.app is running; check Automation permissions in System Settings

Slow searches

Set include_content: false and lower max_results

Mailbox not found

Use exact folder names; nested folders use / separator (e.g., Projects/Alpha)

Permission errors

Grant access in System Settings > Privacy & Security > Automation

Project Structure

apple-mail-mcp/
├── apple_mail_mcp.py          # Script entrypoint
├── start_mcp.sh               # Bundle/runtime launcher
├── pyproject.toml             # Python project metadata
├── uv.lock                    # Locked dependencies
├── apple_mail_mcp/            # MCP package and tool modules
├── apple-mail-mcpb/           # MCP Bundle build files
├── .codex-plugin/             # Codex plugin manifest
├── .mcp.json                  # Codex-bundled MCP server config
├── skills/email-management/   # Email Management Expert Skill
├── CHANGELOG.md
├── LICENSE
└── README.md

Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/my-feature)

  3. Commit and push

  4. Open a Pull Request

License

MIT -- see LICENSE.

Available Tools

38 tools
archive_emailsA

Archive emails matching criteria by moving them to an Archive mailbox.

Safety features:

  • At least one filter (subject_keyword, sender, or older_than_days) is required.

  • dry_run=True (default) previews what would be archived without moving.

  • only_read=True (default) skips unread emails.

  • max_archive caps the number of emails moved in one call.

Args: account: Account name (e.g., "Gmail", "Work") subject_keyword: Optional keyword to filter by subject sender: Optional sender to filter by older_than_days: Optional age filter - only archive emails older than N days only_read: If True (default), only archive emails that have been read from_mailbox: Source mailbox (default "INBOX") archive_mailbox: Destination mailbox (default "Archive") max_archive: Maximum emails to archive per call (default 50) dry_run: If True (default), only preview - do not actually move emails

Returns: Summary of archived (or previewed) emails

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
senderNo
accountYes
dry_runNo
only_readNo
max_archiveNo
from_mailboxNoINBOX
archive_mailboxNoArchive
older_than_daysNo
subject_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses behavioral traits: dry_run mode, only_read filtering, max_archive cap, and the return summary. It covers safety and constraints comprehensively.

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 well-structured with a clear main action, safety features list, and parameter list. It is slightly verbose but every sentence adds value. The front-loading of the main action aids quick understanding.

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

Completeness5/5

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

Given the complexity (9 parameters, no annotations, output schema exists), the description covers all necessary details: parameter meanings, safety constraints, defaults, and return type. It is fully complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

The input schema has 0% description coverage (no property descriptions), so the tool's parameter descriptions add crucial meaning beyond schema titles. Each parameter is explained with purpose and defaults, fully compensating for the schema gap.

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 ('archive emails by moving them to an Archive mailbox') and includes safety features. However, it does not explicitly differentiate this tool from siblings like bulk_move_emails or move_email, which have similar 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 implicit usage guidance through safety features (required filter, dry_run, only_read defaults) but does not explicitly state when to use this tool over alternatives. It could be improved by contrasting with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bulk_move_emailsA

Move multiple emails matching filters to a destination mailbox.

Both from_mailbox (source) and to_mailbox (destination) are required. At least one filter (subject_keyword, sender, or older_than_days) is required.

Args: account: Account name (e.g., "Gmail", "Work") to_mailbox: Destination mailbox. Use "/" for nested mailboxes (e.g., "Projects/ClientX") subject_keyword: Optional keyword to filter emails by subject sender: Optional sender email/name to filter by from_mailbox: Source mailbox (default: "INBOX") older_than_days: Only affect emails older than N days max_emails: Maximum number of emails to move (safety limit, default: 50) dry_run: If True, preview what would be moved without acting (default: False)

Returns: Summary of moved emails with count

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
senderNo
accountYes
dry_runNo
max_emailsNo
to_mailboxYes
from_mailboxNoINBOX
older_than_daysNo
subject_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses safety limit (max_emails=50), dry_run mode for preview, and return type (summary with count). This adequately communicates the tool's behavior, though it could mention that moving removes emails from the source (destructive) and potential side effects like marking as read.

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?

Front-loaded with a clear purpose sentence, followed by a brief requirements paragraph and a structured Args list. Every sentence earns its place; no fluff. The user preferences line at the end is ambiguous but doesn't detract significantly.

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 complexity (8 parameters, no annotations, output schema exists), the description covers the operation, return value, and constraints well. Minor gaps: no error handling or caution about irreversible moves, and no mention of rate limits or authentication. Still, it's comprehensive enough for an agent to use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by documenting each parameter: it lists defaults (from_mailbox='INBOX', dry_run=False, max_emails=50), explains optional filters (subject_keyword, sender, older_than_days), and notes that max_emails is a safety limit. This adds rich meaning beyond the bare 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 opens with 'Move multiple emails matching filters to a destination mailbox,' clearly stating the verb (Move), resource (multiple emails), and scope (matching filters to destination). This distinguishes it from siblings like move_email (single email) and imap_bulk_move (likely similar but different implementation).

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 explicitly states requirements: both from_mailbox and to_mailbox are required, at least one filter is required, and provides format guidance (e.g., '/' for nested mailboxes). It doesn't explicitly compare to siblings, but the context is clear enough for an agent to decide when to use this tool over move_email or imap_bulk_move.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compose_emailA

Compose and send a new email from a specific account.

Args: account: Account name to send from (e.g., "Gmail", "Work", "Personal") to: Recipient email address(es), comma-separated for multiple subject: Email subject line body: Email body text (plain-text fallback when body_html is used) cc: Optional CC recipients, comma-separated for multiple bcc: Optional BCC recipients, comma-separated for multiple attachments: Optional file paths to attach, comma-separated for multiple (e.g., "/path/to/file1.png,/path/to/file2.pdf") mode: Delivery mode — "send" (send immediately, default), "draft" (save silently to Drafts), or "open" (open compose window for review before sending) body_html: Optional HTML email body for rich formatting

Returns: Confirmation message with details of the email

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bccNo
bodyYes
modeNosend
accountYes
subjectYes
body_htmlNo
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the full burden. It discloses modes (send/draft/open), plain-text fallback with body_html, and returns a confirmation. However, it lacks details on error handling, permissions, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is structured with an Args section, making it easy to scan. It is somewhat lengthy but each sentence adds value. The 'User Preferences' line appears outside the description and is not part of the user-facing description.

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

Completeness4/5

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

For a tool with 9 parameters and multiple modes, the description covers the main functionality and all parameters. The presence of an output schema means return details are unnecessary. It lacks error handling details, but overall is sufficient for correct usage.

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?

Schema coverage is 0%, so the description must add meaning. It explains each parameter, including formatting (e.g., comma-separated for to/cc/bcc/attachments) and mode values. This compensates well for the lack of 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 it composes and sends a new email from a specific account. The verb 'compose' and resource 'new email' are specific, and the tool distinguishes itself from sibling tools like reply_to_email or forward_email.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for composing new emails but does not explicitly contrast with alternatives or provide when-not-to-use guidance. Given the many sibling tools, explicit differentiation would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_mailboxA

Create a new mailbox (folder) in the specified account.

Supports nested paths via the parent_mailbox parameter (e.g., parent_mailbox="Projects" + name="2024" creates Projects/2024). You can also pass a full slash-separated path as name (e.g., "Projects/2024/ClientName") and omit parent_mailbox.

Args: account: Account name (e.g., "Gmail", "Work") name: Name for the new mailbox. May contain "/" to create a nested path in one call (each segment is created if needed). parent_mailbox: Optional existing parent folder for nesting.

Returns: Confirmation with the new mailbox path.

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
accountYes
parent_mailboxNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains nesting behavior (e.g., 'creates each segment if needed') and the optional parent_mailbox parameter. It mentions return confirmation. However, it omits potential constraints like account existence, name uniqueness, or required permissions. The user preferences line seems extraneous but not harmful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is front-loaded with the purpose and includes concise parameter descriptions. However, the 'User Preferences' line appears irrelevant and adds clutter. It could be trimmed without losing clarity.

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 an output schema exists and the description mentions 'Confirmation with the new mailbox path,' the tool is adequately documented for a simple creation action. Missing details like idempotency or error handling (e.g., if mailbox already exists) would improve completeness but are not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

With 0% schema description coverage, the description adds significant value: it explains that name can contain '/' for nested paths, parent_mailbox is optional, and account gives examples. It does not list allowed values or constraints for account, but the examples are helpful.

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 'Create a new mailbox (folder) in the specified account,' which is a specific verb+resource. It distinguishes from sibling tools like list_mailboxes or get_unread_count that serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description explains two distinct usage patterns (using parent_mailbox for nesting or passing a full slash-separated path). It does not explicitly state when not to use this tool versus alternatives, but given that no sibling tool creates mailboxes, the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_emailsA

Soft-delete emails (move to Trash) matching filters, with safety features.

IMPORTANT: dry_run=True by default -- shows what WOULD be deleted without acting. Set dry_run=False to actually move emails to Trash.

At least one filter (subject_keyword, sender, or older_than_days) is required. Emails are moved to Trash, never permanently deleted.

Args: account: Account name (e.g., "Gmail", "Work") subject_keyword: Optional keyword to filter emails by subject sender: Optional sender email/name to filter by older_than_days: Only affect emails older than N days mailbox: Source mailbox to search in (default: "INBOX") max_emails: Maximum number of emails to delete (safety limit, default: 25) dry_run: If True (default), only preview what would be deleted

Returns: List of affected email subjects and count

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
senderNo
accountYes
dry_runNo
mailboxNoINBOX
max_emailsNo
older_than_daysNo
subject_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses soft-delete behavior, dry_run safety mode, max_emails safety limit, and that emails are never permanently deleted. Some minor details omitted (e.g., what happens on error), but overall transparent.

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?

Well-structured with a short intro, important note, arg list, and return description. Slightly verbose due to the 'Args' enumeration and user preferences JSON, but still efficient. Every sentence adds value.

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?

Covers purpose, parameters, return value ('List of affected email subjects and count'), and safety behavior. Since an output schema exists, detailed return format is not required. The description is complete for an agent to understand and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema has 0% description coverage for parameters. The description's 'Args' section explains each parameter's purpose and constraints, compensating fully. For example, it clarifies that `older_than_days` filters by age and `dry_run` defaults to True.

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 'Soft-delete emails (move to Trash) matching filters', identifying the specific action (soft-delete) and resource (emails). It distinguishes from siblings like archive_emails and manage_trash by focusing on deletion with filters.

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?

Provides explicit guidance: dry_run=True by default, at least one filter required, and emails are moved to Trash, not permanently deleted. It does not directly contrast with sibling tools but gives clear usage constraints and safety features.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_emailsA

Export emails to files for backup or analysis.

Args: account: Account name (e.g., "Gmail", "Work") scope: Export scope: "single_email" (requires subject_keyword) or "entire_mailbox" subject_keyword: Keyword to find email (required for single_email) mailbox: Mailbox to export from (default: "INBOX") save_directory: Directory to save exports (default: "~/Desktop") format: Export format: "txt", "html" (default: "txt") max_emails: Maximum number of emails to export for entire_mailbox (default: 1000, safety cap)

Returns: Confirmation message with export location

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYes
formatNotxt
accountYes
mailboxNoINBOX
max_emailsNo
save_directoryNo~/Desktop
subject_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although no annotations are provided, the description discloses key behaviors: it exports to files, provides a safety cap (max_emails: 1000), defaults for format and directory, and clarifies required parameters for scopes. It does not mention error handling or authentication, but the core behavior is well-covered.

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 structured docstring with a brief sentence, then bulleted args, and a returns line. It is concise but includes the 'User Preferences' line which may be extraneous. Overall, it is well-organized and easy to scan.

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

Completeness5/5

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

Given the tool's complexity (7 parameters, two scopes) and the presence of an output schema (which likely details the return), the description covers all necessary aspects: parameter meanings, defaults, constraints, and a high-level return description. It is complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter: account (with examples), scope (enum values and constraint), subject_keyword (required for single_email), mailbox (default), save_directory (default), format (enum, default), max_emails (purpose and default). This makes all parameters understandable.

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 'Export emails to files for backup or analysis', specifying the verb (export), resource (emails), and purpose (backup or analysis). This distinguishes it from sibling tools like compose_email, delete_emails, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit guidance is provided on when to use this tool versus alternatives. The description lacks context such as 'Use this instead of list_inbox_emails when you need file output' or 'Not for immediate viewing'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

forward_emailA

Forward an email to one or more recipients.

Args: account: Account name (e.g., "Gmail", "Work") subject_keyword: Keyword to search for in email subjects to: Recipient email address(es), comma-separated for multiple message: Optional message to add before forwarded content mailbox: Mailbox to search in (default: "INBOX") cc: Optional CC recipients, comma-separated for multiple bcc: Optional BCC recipients, comma-separated for multiple

Returns: Confirmation message with details of forwarded email

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bccNo
accountYes
mailboxNoINBOX
messageNo
subject_keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries full burden. It describes the action (forward) and parameters, but does not disclose behavioral traits such as authentication requirements, error handling (e.g., email not found), state changes, or rate limits. Some basic context is provided, but significant gaps remain.

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 well-structured with Args and Returns sections and is reasonably concise. It could be slightly tighter (e.g., the User Preferences line seems extraneous), but overall it is clear and front-loaded with the main purpose.

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 (7 parameters, 3 required, many siblings) and no output schema details, the description covers parameters and return but lacks usage guidelines, error conditions, and prerequisite details (e.g., email must exist). It is functional but incomplete for full contextual understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

The description adds full meaning to all 7 parameters beyond the schema, including account, subject_keyword, to, message, mailbox, cc, bcc. Since schema description coverage is 0%, the description compensates completely, providing clear semantics for each parameter.

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 'Forward an email to one or more recipients,' providing a specific verb and resource. It distinguishes from siblings like 'compose_email' (new email) and 'reply_to_email' (reply), making its 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 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 (e.g., reply, compose). It implicitly suggests usage via parameter details, but lacks explicit when-to-use or when-not-to-use context, which is important given the many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_awaiting_replyA

Find sent emails that haven't received a reply yet.

Scans the Sent mailbox for outgoing emails and cross-references with the Inbox to see if a reply (matching subject) was received from the same recipient. Useful for follow-up tracking.

Args: account: Account name (e.g., "Gmail", "Work", "Personal") days_back: How many days back to check sent emails (default: 7) exclude_noreply: Skip emails sent to noreply/no-reply addresses (default: True) max_results: Maximum results to return (default: 20)

Returns: List of sent emails still awaiting a reply with subject, recipient, and date sent

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
days_backNo
max_resultsNo
exclude_noreplyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the operation: scanning Sent mailbox, cross-referencing Inbox, and returning results. It implies read-only behavior without destructive actions. However, it lacks explicit statements about read-only guarantees or authorization needs.

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 well-structured with a clear summary, detailed explanation, and separate sections for Args and Returns. It is concise and front-loaded, with every sentence adding value.

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

Completeness5/5

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

Given the tool's complexity (4 parameters, output schema exists), the description covers all essential aspects: purpose, logic, parameters, and return format. No crucial information is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description's Args section fully compensates by explaining each parameter's purpose, defaults, and meaning, providing critical semantic context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose: 'Find sent emails that haven't received a reply yet.' It explains the cross-referencing logic and mentions follow-up tracking, making the function unambiguous and specific.

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?

While the description says 'Useful for follow-up tracking', it does not explicitly guide when to use this tool over alternatives like 'get_needs_response' or other email search tools. There is no mention of when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_email_threadA

Get an email conversation thread - all messages with the same or similar subject.

Args: account: Account name (e.g., "Gmail", "Work") subject_keyword: Keyword to identify the thread (e.g., "Re: Project Update") mailbox: Mailbox to search in (default: "INBOX", use "All" for all mailboxes) max_messages: Maximum number of thread messages to return (default: 50)

Returns: Formatted thread view with all related messages sorted by date

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
mailboxNoINBOX
max_messagesNo
subject_keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must carry the burden. It states the tool gets messages with 'same or similar subject' sorted by date, but does not explicitly confirm it is a read-only operation or disclose any side effects (e.g., no marking as read). The verb 'get' implies read-only, but it's not explicit.

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 well-structured with a clear purpose sentence, an Args section with line breaks, and a Returns line. It is front-loaded and concise enough to be effective, though the 'User Preferences' line seems extraneous.

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 (4 parameters, 2 required) and the presence of an output schema, the description adequately covers purpose, parameters, and return format. It does not address error scenarios or thread matching details, but is generally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

With 0% schema description coverage, the description adds full meaning to each parameter: account with examples, subject_keyword usage, mailbox default and 'All' option, and max_messages with default. This goes beyond the schema's basic type/title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description uses the specific verb 'Get' and the resource 'email conversation thread', and clearly distinguishes from siblings like 'list_inbox_emails' or 'search_emails' by focusing on thread retrieval based on subject similarity.

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 explains what the tool does but does not provide explicit guidance on when to use it versus alternatives, nor does it mention when not to use it. The context of 'thread' is implied but not contrasted with other email listing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_email_with_contentA

Search for emails by subject keyword and return with full content preview.

Args: account: Account name to search in (e.g., "Gmail", "Work") subject_keyword: Keyword to search for in email subjects max_results: Maximum number of matching emails to return (default: 5) max_content_length: Maximum content length in characters (default: 300, 0 = unlimited) mailbox: Mailbox to search (default: "INBOX", use "All" for all mailboxes)

Returns: Detailed email information including content preview

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
mailboxNoINBOX
max_resultsNo
subject_keywordYes
max_content_lengthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states the basic operation. It does not disclose potential side effects (none expected as read-only), authentication requirements, rate limits, or error conditions.

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 front-loaded with a concise summary followed by a well-structured parameter list. It avoids unnecessary text but could be slightly more compact by not repeating defaults that are already in the schema.

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?

The description explains all parameters and indicates the return type (detailed email info with content preview). With an output schema present, further detail on return values is not needed. Missing edge cases like empty results or errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema coverage, the description adds essential meaning for all 5 parameters, including examples, defaults, and special values (e.g., 'use "All" for all mailboxes'). This fully compensates for the schema's lack of 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 states the specific action 'Search for emails by subject keyword' and the output 'full content preview'. This clearly distinguishes it from sibling tools like search_emails (broader) or search_by_sender.

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 subject keyword searches but does not provide explicit guidance on when to use vs alternatives or when not to use. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_inbox_overviewA

Get a comprehensive overview of your email inbox status across all accounts.

Returns: Comprehensive overview including: - Unread email counts by account - List of available mailboxes/folders - AI suggestions for actions (move emails, respond to messages, highlight action items, etc.)

This tool is designed to give you a complete picture of your inbox and prompt the assistant to suggest relevant actions based on the current state.

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must convey behavioral traits. It states the tool returns an overview and AI suggestions, but does not disclose whether it is read-only, if it triggers side effects, or any rate limits. The mention of 'prompt the assistant to suggest relevant actions' implies some behavioral impact, but not fully transparent.

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 moderately concise, with a clear purpose sentence followed by a bulleted list of returns. It front-loads the main verb and resource. The inclusion of 'User Preferences' at the end is slightly extraneous but not damaging. Could be slightly tighter, but overall 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 zero parameters and an output schema (mentioned in context), the description covers the essential purpose and adds value by enumerating return elements including AI suggestions. It feels complete for the tool's simplicity, though the user preferences line seems out of place.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The tool has no parameters, and the input schema is empty with 100% coverage. The description adds no parameter meaning (none needed), but notes the overview is 'across all accounts,' confirming no filtering. Baseline for 0 parameters is 4.

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: 'Get a comprehensive overview of your email inbox status across all accounts.' It specifies the verb ('Get') and resource ('inbox overview across all accounts'), and distinguishes itself from sibling tools like get_unread_count or list_inbox_emails by emphasizing comprehensiveness and AI suggestions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies when to use this tool (for a full inbox overview and AI suggestions) but does not explicitly state when not to use it or provide comparisons to alternatives. It lists what it returns, which gives context, but falls short of explicit guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_needs_responseA

Identify unread emails that likely need a response from you.

Filters out newsletters, automated emails, and noreply senders. Prioritises direct emails (To: you) with question marks as likely needing a reply.

Args: account: Account name (e.g., "Gmail", "Work", "Personal") mailbox: Mailbox to scan (default: "INBOX") days_back: How many days back to look (default: 7) max_results: Maximum results to return (default: 20)

Returns: Ranked list of emails likely needing a response, with priority hints

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
mailboxNoINBOX
days_backNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/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 describes filtering logic (newsletters, automated), prioritization based on direct To: and question marks, and the return of a ranked list. It is fairly transparent about behavior.

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 well-structured with clear sections for purpose, args, returns, and user preferences. No redundant information, though it could be slightly tighter.

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 that an output schema exists (though not shown) and parameters are documented, the description is mostly complete. It explains the main logic and return type, but could elaborate on ranking criteria.

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?

Schema has 0% description coverage, but the description provides clear parameter details (account name, mailbox default), adding meaning beyond the schema. It does not cover every parameter extensively but compensates adequately.

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 identifies unread emails that likely need a response, with specific filtering logic. It distinguishes from siblings like get_unread_count and get_awaiting_reply by focusing on prioritization and filtering out automated emails.

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 finding emails needing a reply, but does not explicitly tell when not to use it or name alternatives. Given numerous sibling tools (search_emails, get_awaiting_reply), more explicit guidance would help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_newslettersB

Find newsletter and digest emails by detecting common patterns. Automatically identifies emails from newsletter services and digest senders.

Args: account: Account to search. If None, searches all accounts. days_back: Only search last N days (default: 7) max_results: Maximum newsletters to return (default: 25) include_content: Include content preview (default: True) max_content_length: Max preview length (default: 500)

Returns: List of detected newsletter emails sorted by date

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNo
days_backNo
max_resultsNo
include_contentNo
max_content_lengthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It states 'automatically identifies' but does not disclose how detection works, whether it modifies email state, or any limitations (e.g., only works on certain mailboxes).

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 well-structured with Args and Returns sections, clear and organized. It is concise enough to convey essential information without unnecessary fluff.

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

Completeness3/5

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

With an output schema present, return value details are covered. However, the description lacks context on prerequisites (e.g., account authentication) and behavioral constraints. Adequate but with gaps.

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?

Schema coverage is 0%, but the description provides detailed docstrings for each parameter (account, days_back, max_results, include_content, max_content_length), adding meaning beyond the schema's types and defaults.

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 'finds newsletter and digest emails by detecting common patterns', using a specific verb and resource. It distinguishes itself from siblings like search_emails by focusing on newsletters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., search_emails, get_recent_emails). The description does not mention when not to use it or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_emailsA

Get the most recent emails from a specific account.

Args: account: Account name (e.g., "Gmail", "Work") count: Number of recent emails to retrieve (default: 10) include_content: Whether to include content preview (slower, default: False) output_format: "text" (default, human-readable) or "json" (structured list of email dicts)

Returns: Formatted list of recent emails

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
accountYes
output_formatNotext
include_contentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full burden. It discloses that 'include_content' is slower, and output_format options. It does not mention authentication, rate limits, or whether the operation is read-only. Provides minimal but useful behavioral 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 a well-structured docstring with clear Args and Returns sections. Every sentence adds value, no fluff. Front-loaded with the main purpose.

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?

Covers parameters, behavior (slower with content), and output format. With an output schema present, return values are adequately described. Lacks details on error handling or account existence checks, but sufficient for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema description coverage is 0%, but the description fully documents all four parameters with examples and defaults (e.g., account name format, count default, include_content speed impact, output_format choices). Adds significant meaning beyond schema.

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 gets 'the most recent emails from a specific account' – specific verb and resource. However, it doesn't distinguish from siblings like 'list_inbox_emails' or 'get_recent_from_sender', which may overlap in functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives. The description implies usage for recent emails from an account, but doesn't clarify when to prefer it over similar tools like 'search_emails' or 'get_recent_from_sender'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_from_senderA

Get recent emails from a specific sender with simple, human-friendly time filters.

Args: sender: Sender name or email to search for (partial match) account: Optional account. If None, searches all accounts. time_range: Human-friendly time filter: - "today" = last 24 hours - "yesterday" = yesterday only - "week" = last 7 days (default) - "month" = last 30 days - "all" = no time filter max_results: Maximum emails to return (default: 15) include_content: Include content preview (default: True) max_content_length: Max preview length (default: 400) mailbox: Mailbox to search (default: "INBOX", use "All" for all mailboxes)

Returns: Recent emails from the specified sender within the time range

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
senderYes
accountNo
mailboxNoINBOX
time_rangeNoweek
max_resultsNo
include_contentNo
max_content_lengthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It describes the parameters and return, but does not disclose behavioral traits such as read-only nature, partial match behavior, pagination, or any side effects. It provides basic transparency but lacks depth.

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 well-structured with an Args section and bullet points. It is front-loaded with a clear purpose sentence. However, it includes an irrelevant 'User Preferences' section and is somewhat lengthy, though every sentence serves a purpose.

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 7 parameters, no annotations, and an output schema that exists, the description covers all necessary parameter details and the return value. It is complete enough for an agent to invoke the tool correctly, though minor extras like user preferences could be removed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

The input schema has 0% description coverage, and the description compensates fully by explaining each parameter's meaning, default values, and acceptable values (e.g., time_range options). This is excellent and adds significant value beyond the schema.

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 it fetches recent emails from a specific sender with human-friendly time filters, which is specific and informative. However, it does not differentiate itself from similar sibling tools like 'search_by_sender' or 'get_recent_emails', leaving ambiguity about when to use this tool over others.

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 explicit guidance on when to use this tool versus alternatives. It implies usage for recent emails from a sender with time filters, but does not state prerequisites or exclusions, nor does it mention any relationship to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statisticsA

Get comprehensive email statistics and analytics.

Args: account: Account name (e.g., "Gmail", "Work") scope: Analysis scope: "account_overview", "sender_stats", "mailbox_breakdown" sender: Specific sender for "sender_stats" scope mailbox: Specific mailbox for "mailbox_breakdown" scope days_back: Number of days to analyze (default: 30, 0 = all time)

Returns: Formatted statistics report with metrics and insights

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoaccount_overview
senderNo
accountYes
mailboxNo
days_backNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must disclose behavioral traits. It only describes parameters and output, but does not indicate whether the tool is read-only, if it requires specific permissions, or any side effects. The return value is vaguely described as 'formatted statistics report,' but no details on data freshness, limits, or analogous behaviors.

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 structured docstring with clear sections (Args, Returns). It is concise, with only one introductory sentence and minimal repetition. Minor improvement: some parameter explanations (e.g., 'Specific sender for...') could be integrated into parameter descriptions rather than repeated inline.

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 (5 params, 1 required) and presence of an output schema, the description adequately covers purpose and parameters. However, it lacks behavioral and usage context (e.g., whether it's safe to call frequently, any prerequisites like account existence). This gap in completeness is notable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema description coverage is 0%, so the description carries full burden for parameter meaning. It explains all 5 parameters: account (placeholder), scope with enumerated values, sender and mailbox conditioned on scope, and days_back with default. This adds essential context missing from the bare 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 states 'Get comprehensive email statistics and analytics,' which is a specific verb+resource pair. It further distinguishes via the 'scope' parameter (account_overview, sender_stats, mailbox_breakdown), clearly differentiating from sibling tools like get_unread_count or get_inbox_overview.

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 lacks explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions (e.g., for simple counts use get_unread_count), or context where this tool is appropriate, leaving the agent to infer usage from the parameter names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_sendersA

Analyse a mailbox to find the most frequent senders.

Useful for identifying key contacts, high-volume senders to filter, or newsletter sources to unsubscribe from.

Args: account: Account name (e.g., "Gmail", "Work", "Personal") mailbox: Mailbox to analyse (default: "INBOX") days_back: How many days back to look (default: 30, 0 = all time) top_n: Number of top senders to return (default: 10) group_by_domain: Group results by domain instead of individual sender (default: False)

Returns: Ranked list of senders (or domains) with email counts

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNo
accountYes
mailboxNoINBOX
days_backNo
group_by_domainNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It explains the tool is analytical and returns a ranked list, implying no destructive side effects. It does not explicitly state read-only behavior or resource consumption, but for a simple analysis tool, the description is adequate.

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 well-structured with a clear purpose statement, usage line, parameter details, and return description. It is front-loaded but slightly verbose due to full parameter documentation. It could be more concise while retaining all necessary information.

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 that an output schema exists (context: 'Has output schema: true'), the description adequately covers what is needed: purpose, parameters, and return type (ranked list with counts). It also provides usage context. It is complete for a relatively simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

The input schema has 0% description coverage, but the description compensates fully by documenting all parameters in the Args section (account, mailbox, days_back, top_n, group_by_domain) with defaults and explanations. This adds significant meaning beyond the bare 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 tool's purpose: 'Analyse a mailbox to find the most frequent senders.' It uses specific verbs and resources, distinguishing it from sibling tools like search_by_sender (which finds emails from a sender) and get_newsletters (which identifies newsletters).

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 context on when to use: 'Useful for identifying key contacts, high-volume senders to filter, or newsletter sources to unsubscribe from.' This gives clear use cases, though it doesn't explicitly state when not to use or mention alternatives. The sibling list helps with differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_unread_countB

Get the count of unread emails for each account.

Returns: Dictionary mapping account names to unread email counts

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the return format (dictionary mapping accounts to counts), which adds value beyond the empty input schema. But lacks explicit read-only hint or side effect disclosure. No annotations to fall back on.

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?

One concise sentence plus return format. However, the extraneous 'User Preferences' line does not belong and slightly reduces clarity.

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

Completeness4/5

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

For a zero-parameter tool with an output schema, the description adequately conveys purpose and return. Could be enhanced by mentioning any constraints (e.g., only primary account).

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?

No parameters exist; schema coverage is 100%. Per guidelines, baseline 4 applies. Description adds nothing about parameters because none are needed.

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?

Clearly states the tool gets the count of unread emails per account, with a specific verb and resource. However, it does not explicitly distinguish itself from sibling tools like get_recent_emails or get_inbox_overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_inbox_overview might also show counts). No when-not or contextual recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

imap_bulk_moveA

Move emails between IMAP folders directly (fast, for Proton Bridge).

Much faster than AppleScript for large mailboxes. Optionally filter by sender. Writes progress to /tmp/apple-mail-mcp-sort.log (tail -f to monitor).

Requires config: ~/.config/apple-mail-mcp/imap.json

Args: from_mailbox: Source mailbox (e.g., "INBOX", "Rechnungen", "IT/Netflix") to_mailbox: Destination mailbox (e.g., "Finanzen/Rechnungen") sender: Optional sender pattern to filter by (case-insensitive substring) max_moves: Maximum emails to move (safety limit, default: 100) dry_run: If True, only count matches without moving (default: True)

Returns: Summary of moved emails

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
senderNo
dry_runNo
max_movesNo
to_mailboxYes
from_mailboxYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. It explains the moving action, safety limit (max_moves), dry_run option, progress logging to a file, and config dependency. It does not detail authorization or reversibility but covers key aspects.

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 well-structured: a one-line purpose, context, config note, then a clear parameter list, and returns summary. Every sentence adds value without redundancy.

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?

The description covers purpose, usage, parameters, behavior, and output summary. With an output schema present, the brief return note is acceptable. It lacks only advanced details (e.g., auth specifics) but is complete for practical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema description coverage is 0%, but the description provides detailed parameter explanations (purpose, type, default) in the 'Args' section, adding significant meaning beyond the schema's titles and types. This fully compensates for the lack of 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 states the tool moves emails between IMAP folders, explicitly notes it's fast for Proton Bridge, and distinguishes from AppleScript. It also mentions optional sender filtering, clearly defining the specific action and resource.

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 context on when to use (fast bulk moves for large mailboxes) and mentions progress logging and config requirements. However, it does not explicitly state when to avoid or compare directly with sibling tools like 'move_email' or 'bulk_move_emails'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inbox_dashboardA

Get an interactive dashboard view of your email inbox.

Returns an interactive UI dashboard resource that displays:

  • Unread email counts by account (visual cards with badges)

  • Recent emails across all accounts (filterable list)

  • Quick action buttons for common operations (Mark Read, Archive, Delete)

  • Search functionality to filter emails

This tool returns a UIResource that can be rendered by compatible MCP clients (like Claude Desktop with MCP Apps support) to provide an interactive dashboard experience.

Note: Requires mcp-ui-server package and a compatible MCP client.

Returns: UIResource with uri "ui://apple-mail/inbox-dashboard" containing an interactive HTML dashboard, or error message if UI is unavailable.

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses that the tool returns a UIResource with an interactive HTML dashboard, identifies dependencies, and explains the user interface elements. This is good transparency for a read-only interactive 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?

Well-structured with bullet points listing dashboard components. First sentence clearly states the tool's purpose. Every sentence adds value—prerequisites, return type, and user preferences are included succinctly. No wasted words.

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

Completeness4/5

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

The description explains the interactive dashboard output, its components, and dependencies. Given no parameters and no output schema, it covers the essential context. Could mention non-UI fallback or error handling explicitly, but overall complete.

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?

No parameters exist (0 params, 100% schema coverage). Per guidelines, baseline is 4. The description does not add parameter info, but none is needed.

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?

Clearly states it returns an interactive dashboard view of the email inbox, listing specific UI components (unread counts, recent emails, quick actions, search). Distinguishes from sibling tools like get_inbox_overview or list_inbox_emails by focusing on an interactive UI rather than plain 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?

Describes the interactive dashboard context and mentions prerequisites (mcp-ui-server package, compatible client). While it doesn't explicitly state when not to use or list alternatives, the use case is clear and distinct from sibling tools that handle specific actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_accountsA

List all available Mail accounts.

Returns: List of account names

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 for behavioral disclosure. It mentions returning a list of account names but does not disclose whether it is a read-only operation, requires authentication, or has any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is concise with only two sentences, but includes an irrelevant 'User Preferences' line that does not aid understanding. It is efficient but could be slightly cleaner.

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 zero parameters and an output schema (indicated but not shown), the description is mostly complete for a simple list tool. However, it could mention if any preconditions exist, such as requiring a configured account.

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 zero parameters, so the description needs no parameter details. The baseline score of 4 applies as there's nothing to add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states 'List all available Mail accounts' with a specific verb and resource, distinguishing it from sibling tools that focus on emails rather than accounts.

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 no guidance on when to use this tool versus alternatives like list_mailboxes or other listing tools. The usage is implied but not explicitly compared.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_email_attachmentsB

List attachments for emails matching a subject keyword.

Args: account: Account name (e.g., "Gmail", "Work", "Personal") subject_keyword: Keyword to search for in email subjects max_results: Maximum number of matching emails to check (default: 1)

Returns: List of attachments with their names and sizes

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
max_resultsNo
subject_keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It states the return type (list of attachments with names and sizes) but omits behavioral traits such as whether it is read-only, if it only checks max_results emails, or what happens on no matches.

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 short and structured with Args and Returns sections. Every sentence provides value; no superfluous text.

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

Completeness3/5

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

Given the presence of an output schema and 3 parameters, the description is adequate but not thorough. It covers basic functionality and return format but lacks usage guidance and behavioral details.

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 no descriptions (0% coverage), but the description's Args section adds meaning: examples for account (e.g., 'Gmail'), explanation of max_results ('Maximum number of matching emails to check'), and clarifies the purpose of subject_keyword.

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 'List attachments for emails matching a subject keyword' with a specific verb and resource. It effectively conveys the tool's function but does not explicitly differentiate from sibling tools like search_emails or get_email_with_content.

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 does not specify when to use this tool versus alternatives. It lacks explicit guidance on usage context, prerequisites, or exclusions, leaving the agent to infer from the parameter list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_inbox_emailsB

List all emails from inbox across all accounts or a specific account.

Args: account: Optional account name to filter (e.g., "Gmail", "Work"). If None, shows all accounts. max_emails: Maximum number of emails to return per account (0 = all) include_read: Whether to include read emails (default: True) output_format: "text" (default, human-readable) or "json" (structured list of email dicts)

Returns: Formatted list of emails with subject, sender, date, and read status

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNo
max_emailsNo
include_readNo
output_formatNotext

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description accurately portrays a read-only operation with no side effects, but does not explicitly confirm non-destructive behavior or disclose potential rate limits. With no annotations, the description carries the full burden and is adequate but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Core description is concise, but includes an extraneous 'User Preferences' line that is unrelated to tool usage. This slightly reduces conciseness without adding value.

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?

Covers parameter details and return format adequately. However, it omits potential limitations (e.g., pagination, error handling) and does not leverage the presence of an output schema to simplify the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter's meaning, default values, and the effect of 'None' for account. Adds significant value beyond the bare schema.

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 it lists emails from inbox across accounts, using specific verb and resource. However, it does not explicitly differentiate from sibling tools like 'get_recent_emails' or 'search_emails', lacking 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 on when to use this tool versus alternatives. The description only states what it does, without exclusions or recommendations for when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mailboxesA

List all mailboxes (folders) for a specific account or all accounts.

Args: account: Optional account name to filter (e.g., "Gmail", "Work"). If None, shows all accounts. include_counts: Whether to include message counts for each mailbox (default: True)

Returns: Formatted list of mailboxes with optional message counts. For nested mailboxes, shows both indented format and path format (e.g., "Projects/Amplify Impact")

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNo
include_countsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/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 discloses the return format (formatted list with optional counts and nested path format), which is sufficient for a read-only listing tool. No behavioral contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is mostly clear but includes an unrelated 'User Preferences' line that wastes space and adds no value for tool selection. The Args and Returns sections are well-structured, but the extra line reduces conciseness.

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

Completeness5/5

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

Given only 2 optional parameters and an output schema, the description covers purpose, parameters, and return format adequately. No missing information for effective tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema description coverage is 0%, so description must compensate. It explains both parameters with examples (e.g., 'Gmail', 'Work') and default values, adding meaning beyond the raw 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 it lists all mailboxes/folders for a specific account or all accounts, with a specific verb 'list' and resource 'mailboxes'. It distinguishes from sibling tools like list_inbox_emails (which lists emails) and others.

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 on when to use: to list mailboxes, optionally filtered by account. It does not explicitly state when not to use or name alternatives, but the purpose is unambiguous given sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_draftsA

Manage draft emails - list, create, send, open, or delete drafts.

Args: account: Account name (e.g., "Gmail", "Work") action: Action to perform: "list", "create", "send", "open", "delete". Use "open" to open a draft in a visible compose window for review before sending. subject: Email subject (required for create) to: Recipient email(s) for create (comma-separated) body: Email body (required for create) cc: Optional CC recipients for create bcc: Optional BCC recipients for create draft_subject: Subject keyword to find draft (required for send/open/delete)

Returns: Formatted output based on action

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toNo
bccNo
bodyNo
actionYes
accountYes
subjectNo
draft_subjectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior but only lists actions and their required parameters. It mentions 'open' creates a visible window, but lacks details on consequences (e.g., whether 'delete' permanently removes, or 'send' actually dispatches the email). No confirmation or error states are described.

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 well-structured with an Args section and a Returns line. It is relatively concise given the number of parameters and actions, but could be slightly more terse by removing the 'Returns' line which adds little value.

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 5 actions, 8 parameters, and an output schema, the description covers actions and parameters adequately but falls short on return behavior ('Formatted output based on action' is vague). It does not address error handling or edge cases, so while schema exists, the description could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

All 8 parameters are explained with their purpose and required context (e.g., 'subject' required for create, 'draft_subject' required for send/open/delete). Since schema description coverage is 0%, the description fully compensates by adding meaning beyond the raw 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 tool manages draft emails and lists five specific actions (list, create, send, open, delete), making the purpose explicit. It distinguishes itself from sibling tools like 'compose_email' by covering multiple draft operations in one tool.

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 context for when to use the 'open' action versus 'send' (e.g., 'Use open to open a draft in a visible compose window for review before sending'). However, it does not compare to sibling tools like 'compose_email' for creating drafts or advise against misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_trashA

Manage trash operations - delete emails or empty trash.

Args: account: Account name (e.g., "Gmail", "Work") action: Action to perform: "move_to_trash", "delete_permanent", "empty_trash" subject_keyword: Optional keyword to filter emails (not used for empty_trash) sender: Optional sender to filter emails (not used for empty_trash) mailbox: Source mailbox (default: "INBOX", not used for empty_trash or delete_permanent) max_deletes: Maximum number of emails to delete (safety limit, default: 5) confirm_empty: Must be True to execute "empty_trash" action (safety confirmation) apply_to_all: Must be True to allow operations without subject_keyword or sender filter

Returns: Confirmation message with details of deleted emails

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
senderNo
accountYes
mailboxNoINBOX
max_deletesNo
apply_to_allNo
confirm_emptyNo
subject_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses safety limits (max_deletes, confirm_empty) and mentions return type. However, for destructive actions like delete_permanent and empty_trash, it does not explicitly warn of irreversibility or data loss, which is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Description is adequately structured with Args and Returns, but is verbose with detailed parameter explanations. Could be more concise by grouping related parameters. The first sentence is clear and front-loaded, but overall length is justified given the parameter complexity.

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?

Covers all parameters and return type, but lacks logical constraints (e.g., which actions require which optional params) and example usage. Given 8 parameters and 0% schema coverage, the description is functional but not complete enough for seamless agent use without trial and error.

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?

Schema coverage is 0%, so description must explain parameters. It effectively describes each parameter, listing allowed actions, conditional usage (e.g., subject_keyword not used for empty_trash), and safety roles. Lacks format details for account or action, but adds significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Description clearly states it manages trash operations (delete emails or empty trash) with three specific actions. This differentiates it from siblings like delete_emails or archive_emails by focusing on trash lifecycle. The purpose is specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. With 38 siblings including delete_emails and move_email, the description does not clarify when to choose manage_trash over them. Safety parameters hint at usage context but are not stated explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_emailsA

Batch mark emails as read/unread and/or flagged/unflagged.

At least one filter (subject_keyword, sender, or older_than_days) is required.

Args: account: Account name (e.g., "Gmail", "Work") action: Action to perform: "read", "unread", "flagged", "unflagged" subject_keyword: Optional keyword to filter emails by subject sender: Optional sender email/name to filter by mailbox: Mailbox to search in (default: "INBOX") older_than_days: Only affect emails older than N days max_emails: Maximum number of emails to update (safety limit, default: 50)

Returns: Summary of affected emails

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
senderNo
accountYes
mailboxNoINBOX
max_emailsNo
older_than_daysNo
subject_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses safety limit (max_emails) and required filters, but does not mention idempotency, error handling, or behavior when no emails match.

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?

Efficiently structured with a one-line summary, a requirement statement, and a clear Args list. No redundant or extra sentences.

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?

Covers key aspects: operation, required filters, all parameters with explanations, safety limit, and return summary. Lacks details on output schema and error scenarios, but adequate given no annotations.

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?

Schema description coverage is 0%, but the Args section adds meaning: it clarifies filters are optional, explains max_emails as safety limit, and describes each parameter's role. Compensates well for missing 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?

Description states 'Batch mark emails as read/unread and/or flagged/unflagged' with a specific verb and resource. It clearly distinguishes from siblings like update_email_status (single email) by emphasizing batch operation and required filters.

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?

Indicates at least one filter required and lists filter parameters, implying multi-condition batch use. However, no explicit comparison to sibling tools or when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_emailA

Move email(s) matching a subject keyword from one mailbox to another.

Args: account: Account name (e.g., "Gmail", "Work") subject_keyword: Keyword to search for in email subjects to_mailbox: Destination mailbox name. For nested mailboxes, use "/" separator (e.g., "Projects/Amplify Impact") from_mailbox: Source mailbox name (default: "INBOX") max_moves: Maximum number of emails to move (default: 1, safety limit) message_ids: Exact Apple Mail message ids to move; when provided, subject filtering is ignored

Returns: Confirmation message with details of moved emails

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
max_movesNo
to_mailboxYes
message_idsNo
from_mailboxNoINBOX
subject_keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors: subject keyword matching, nesting separator for mailboxes, safety limit (max_moves default=1), and that message_ids overrides subject filtering. No annotations exist, so description carries the burden well.

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 front-loaded with a clear action sentence, followed by structured Args and Returns. It is moderately sized and fairly concise, though could trim some redundancy.

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 6 parameters, no annotations, and many siblings, the description covers core behaviors but lacks usage guidelines and comparison to similar tools. It explains override logic but doesn't address common workflows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the Args section provides complete parameter explanations, including defaults, nesting hints, and the override relationship between message_ids and subject_keyword. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the action: 'Move email(s) matching a subject keyword from one mailbox to another.' This is specific and differentiates from siblings like 'bulk_move_emails' and 'imap_bulk_move'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'delete_emails', 'archive_emails', or 'bulk_move_emails'. The description doesn't mention prerequisites or conditions for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_to_emailA

Reply to an email matching a subject keyword.

Args: account: Account name (e.g., "Gmail", "Work") subject_keyword: Keyword to search for in email subjects reply_body: The body text of the reply reply_to_all: If True, reply to all recipients; if False, reply only to sender (default: False) cc: Optional CC recipients, comma-separated for multiple bcc: Optional BCC recipients, comma-separated for multiple send: If True (default), send immediately; if False, save as draft. Ignored if mode is set. mode: Delivery mode — "send" (send immediately), "draft" (save silently), or "open" (open compose window for review). Overrides send parameter when set. attachments: Optional file paths to attach, comma-separated for multiple (e.g., "/path/to/file1.png,/path/to/file2.pdf")

Returns: Confirmation message with details of the reply sent, saved draft, or opened draft

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
bccNo
modeNo
sendNo
accountYes
reply_bodyYes
attachmentsNo
reply_to_allNo
subject_keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It explains parameter effects (send vs mode, reply_to_all) and return value, but does not cover edge cases like multiple matching emails or error scenarios. Good coverage of typical behavior.

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 efficient with a clear purpose statement followed by parameter details. Every sentence adds value, though the parameter block is somewhat lengthy. Front-loaded and well-structured for scanning.

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 9 parameters, 3 required, and no annotations, the description covers input parameters thoroughly. It mentions return value, but lacks details on error handling or matching behavior. An output schema exists, reducing need for return value details. Fairly complete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema coverage is 0%, so the description fully compensates. It explains each parameter with examples (e.g., attachments file paths), defaults, and overrides (mode overrides send). Adds significant meaning beyond the schema property types.

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 replies to an email identified by a subject keyword. It uses a specific verb and resource, distinguishing it from siblings like compose_email or forward_email by focusing on replying to an existing email.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for replying to emails but does not provide explicit when-to-use or when-not-to-use guidance. It lacks mention of alternatives or prerequisites, such as needing to locate an email first, though the purpose is clear from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_email_attachmentA

Save a specific attachment from an email to disk.

Args: account: Account name (e.g., "Gmail", "Work", "Personal") subject_keyword: Keyword to search for in email subjects attachment_name: Name of the attachment to save save_path: Full path where to save the attachment

Returns: Confirmation message with save location

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
save_pathYes
attachment_nameYes
subject_keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It states it saves to disk and returns a confirmation message, but does not disclose side effects (e.g., whether the email is modified, marked as read, or deleted). The description is acceptable but could be more transparent about behavioral traits.

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 brief and well-structured: a one-line purpose, then a clear arg list, then return value. It is front-loaded and contains no unnecessary filler. However, the return value line could be omitted if the output schema is present, but it is fine overall.

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 4 required parameters, no annotations, and an output schema (context indicates it exists), the description covers the basics adequately. However, it lacks edge-case behavior (e.g., multiple emails matching subject keyword, attachment not found, overwriting files). It is minimally complete but could be more thorough.

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?

Schema coverage is 0%, meaning the schema has no descriptions. The description provides explicit meaning for each parameter in the docstring (e.g., 'account: Account name (e.g., "Gmail", "Work", "Personal")'), which adds significant value beyond the structured 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 action: 'Save a specific attachment from an email to disk.' It uses a specific verb and resource, and the sibling tool list includes other email attachment tools like 'list_email_attachments', so it distinguishes well.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., email must be fetched first) or when not to use it. The context of sibling tools is not leveraged to provide usage distinctions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_all_accountsA

Search across ALL email accounts at once.

Returns consolidated results sorted by date (newest first). Only searches INBOX mailboxes (skips Trash, Junk, Drafts, Sent).

Args: subject_keyword: Optional keyword to search in subject sender: Optional sender email or name to filter by days_back: Number of days to look back (default: 7, 0 = all time) max_results: Maximum total results across all accounts (default: 30) include_content: Whether to include email content preview (default: True) max_content_length: Maximum content length in characters (default: 400)

Returns: Formatted list of matching emails with account name for each

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
senderNo
days_backNo
max_resultsNo
include_contentNo
subject_keywordNo
max_content_lengthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/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 that results are sorted by date (newest first), that only INBOX mailboxes are searched, and that the result includes account names. This adds significant behavioral context 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 well-structured with a brief introductory sentence, a parameter list, and a return note. However, the inclusion of 'User Preferences' is extraneous and not relevant to tool selection or invocation, slightly detracting from conciseness.

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?

The description covers the tool's core behavior (cross-account search, inbox-only, sorted results) and all parameters. It mentions the output format implicitly. With an output schema present, the description does not need to detail return structure. It is complete enough for typical use, though it lacks error handling or rate limit notes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema coverage is 0%, and the description compensates excellently with a detailed 'Args' section that explains each parameter's purpose, default values, and special values (e.g., '0 = all time' for days_back). This is a textbook example of parameter documentation.

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 it searches across ALL email accounts, uses the verb 'search', and specifies the resource 'all email accounts'. It distinguishes from siblings by emphasizing cross-account search and limiting to INBOX, which sets it apart from single-account search tools like search_emails.

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 explicitly states when to use the tool ('search across ALL email accounts at once') and notes a key constraint ('Only searches INBOX mailboxes'). While it doesn't explicitly mention alternatives, the context of sibling tools and the emphasis on 'all accounts' provides sufficient guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_by_senderA

Find all emails from a specific sender across one or all accounts. Perfect for tracking newsletters, contacts, or communications from specific people/organizations.

Args: sender: Sender name or email to search for (partial match, e.g., "alphasignal" or "john@") account: Optional account name. If None, searches all accounts. days_back: Only search emails from the last N days (default: 30, 0 = all time) max_results: Maximum number of emails to return (default: 20) include_content: Whether to include email content preview (default: True) max_content_length: Maximum length of content preview (default: 500) mailbox: Mailbox to search (default: "INBOX", use "All" for all mailboxes)

Returns: Formatted list of emails from the sender, sorted by date (newest first)

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
senderYes
accountNo
mailboxNoINBOX
days_backNo
max_resultsNo
include_contentNo
max_content_lengthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It mentions partial match, default values, and return format, but does not disclose whether the operation is read-only, rate limits, or authentication needs. Adequate but not comprehensive.

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?

Well-structured with clear purpose upfront, followed by parameter descriptions and return info. No extraneous sentences; every word adds value.

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 0% schema coverage and no annotations, the description covers behavior, parameters, and returns. Could mention that the operation is non-destructive (search only), but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema coverage is 0%, but the description provides meaningful docstrings for all 7 parameters, adding details like partial match, defaults with explanations, and special values (e.g., days_back=0 for all time).

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 (find) and resource (emails) with specific scope (from a specific sender across accounts). It distinguishes from siblings like search_emails or get_recent_from_sender by focusing on sender-based search.

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?

Provides clear context with examples ('tracking newsletters, contacts, or communications from specific people/organizations'), but does not explicitly state when not to use or offer 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_email_contentA

Search email body content (and optionally subject). This is slower than subject-only search but finds more relevant results.

Args: account: Account name to search in search_text: Text to search for in email content mailbox: Mailbox to search (default: "INBOX") search_subject: Also search in subject line (default: True) search_body: Search in email body (default: True) max_results: Maximum results to return (default: 10, keep low as this is slow) max_content_length: Max content preview length (default: 600)

Returns: Emails where the search text appears in body and/or subject

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYes
mailboxNoINBOX
max_resultsNo
search_bodyNo
search_textYes
search_subjectNo
max_content_lengthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully bears the burden of disclosure. It discloses performance characteristics (slower), default behaviors (searches both body and subject by default), and provides parameters like max_results and max_content_length that control output. It does not mention authorization or error handling, which are minor gaps.

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 begins with a clear one-sentence summary, then provides a structured parameter list. However, it includes a 'User Preferences' line that appears extraneous and slightly detracts from conciseness.

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, 2 required) and the existence of an output schema, the description adequately covers input semantics and core behavior. It could be enhanced with return format details, but the output schema likely covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

The description includes a detailed Args list explaining each parameter and its default value, compensating for the schema's 0% description coverage. This provides essential meaning beyond the schema's property names, such as clarifying that 'search_subject' and 'search_body' are both true by default.

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 searches email body and optionally subject, and distinguishes itself from subject-only searches by noting it is slower but finds more relevant results. This differentiates it from sibling tools like 'search_emails' and 'search_emails_advanced'.

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 explicitly warns that this tool is slower than subject-only searches, implying that for faster results, users should use an alternative. However, it does not explicitly name which sibling tool to use, leaving some ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_emailsA

Unified search tool - search emails with advanced filtering across any mailbox.

Args: account: Account name to search in (e.g., "Gmail", "Work") mailbox: Mailbox to search (default: "INBOX", use "All" for all mailboxes, or specific folder name) subject_keyword: Optional keyword to search in subject sender: Optional sender email or name to filter by has_attachments: Optional filter for emails with attachments (True/False/None) read_status: Filter by read status: "all", "read", "unread" (default: "all") date_from: Optional start date filter (format: "YYYY-MM-DD") date_to: Optional end date filter (format: "YYYY-MM-DD") include_content: Whether to include email content preview (slower) max_results: Maximum number of results to return (default: 20) output_format: "text" (default, human-readable) or "json" (structured list of email dicts) flag_color: Optional flag color filter: red, orange, yellow, green, blue, purple, gray

Returns: Formatted list of matching emails with all requested details

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
senderNo
accountYes
date_toNo
mailboxNoINBOX
date_fromNo
flag_colorNo
max_resultsNo
read_statusNoall
output_formatNotext
has_attachmentsNo
include_contentNo
subject_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden. It includes useful notes like 'include_content: Whether to include email content preview (slower)', but does not explicitly state that the tool is read-only, disclose auth requirements, or mention rate limits. Basic behavioral traits are implied but not fully transparent.

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 well-structured with a clear 'Args:' section listing parameters. It is front-loaded with the purpose. Though it is lengthy due to 12 parameters, this is justified given the 0% schema coverage. A slightly more condensed style could be used, but overall it is efficient.

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?

The description covers all parameters and states the return format vaguely ('Formatted list of matching emails'). With an output schema present, the return details are acceptable. However, it lacks critical context such as differentiating from sibling search tools (e.g., search_emails_advanced, search_by_sender) and clarifying whether 'any mailbox' includes multiple accounts or just the one specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates. Every parameter is explained with allowed values, defaults, and formats (e.g., read_status: 'all', 'read', 'unread'; date_from: 'YYYY-MM-DD'). This significantly helps an agent understand and use each parameter correctly.

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 'Unified search tool - search emails with advanced filtering across any mailbox,' which identifies the core function. However, given the many sibling search tools (e.g., search_emails_advanced, search_by_sender), it does not explicitly differentiate itself, leaving ambiguity about when to use this version over others.

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 detailed parameter explanations but offers no guidance on when to use this tool versus alternatives. It does not mention prerequisites, contextual triggers, or exclude other search tools, leaving the agent to infer usage without clear boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_emails_advancedA

Powerful unified search across accounts and mailboxes with flexible filters.

Combines the capabilities of search_emails, search_by_sender, search_email_content, and search_all_accounts into one tool. When account is None, all accounts are searched.

Uses IMAP when available (much faster, no Mail.app freezes). Falls back to AppleScript for accounts without IMAP configuration.

Args: account: Account to search (None = all accounts) mailbox: Mailbox name (default "INBOX", "All" for all mailboxes) subject_contains: Filter by subject keyword (case-insensitive) body_contains: Filter by body text (slower, case-insensitive) sender_contains: Filter by sender name/email (case-insensitive) to_contains: Filter by To recipient address (case-insensitive, IMAP-accelerated) cc_contains: Filter by CC recipient address (case-insensitive, IMAP-accelerated) date_from: Start date "YYYY-MM-DD" (inclusive) date_to: End date "YYYY-MM-DD" (inclusive) is_read: Filter by read status (True/False/None for any) has_attachments: Filter by attachment presence (True/False/None) is_flagged: Filter by flagged status (True/False/None) max_results: Maximum results (default 50) offset: Skip first N results for pagination (default 0) output_format: "text" (human-readable) or "json" (structured)

Returns: Matching emails across the specified scope

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNo
accountNo
date_toNo
is_readNo
mailboxNoINBOX
date_fromNo
is_flaggedNo
cc_containsNo
max_resultsNo
to_containsNo
body_containsNo
output_formatNotext
has_attachmentsNo
sender_containsNo
subject_containsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses important behaviors: IMAP vs AppleScript fallback, slower body search, and that account=None searches all accounts. It lacks details on pagination limits or rate limits, but covers key behavioral traits.

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 well-structured with a summary, functional overview, and bulleted parameter list. It is slightly verbose but appropriate for the number of parameters. Every sentence adds value.

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 complexity (15 params, no output schema needed due to presence of output schema), the description is fairly complete: it covers purpose, parameters, behavior, and format options. It could elaborate on pagination semantics but is generally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

The description provides a comprehensive parameter list with detailed explanations for all 15 parameters, including defaults, formats, and special values like 'All' for mailbox. Since schema coverage is 0%, this adds essential meaning beyond the raw 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 it as a 'Powerful unified search across accounts and mailboxes with flexible filters' and explicitly mentions combining capabilities of specific sibling tools (search_emails, search_by_sender, search_email_content, search_all_accounts). This distinguishes it from those similar tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description explains when to use this tool (for flexible filters and cross-account search) and includes a critical note about IMAP vs AppleScript fallback. However, it does not explicitly state when NOT to use this tool or provide direct comparisons to alternatives for simple searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sort_inboxA

Sort inbox emails into folders by sender using IMAP (fast, for Proton Bridge).

Reads sorting rules from ~/.config/apple-mail-mcp/sort_rules.json. Each rule maps a sender pattern to a destination folder.

Writes real-time progress to /tmp/apple-mail-mcp-sort.log (tail -f to monitor).

Supports batch processing: set batch_size to move N emails per call. Call repeatedly until inbox is clean — already-moved emails are skipped.

Requires config: ~/.config/apple-mail-mcp/imap.json

Args: dry_run: If True, only show what would happen without moving (default: True) max_emails: Maximum emails to scan (0 = all) batch_size: Max emails to move per call (0 = all matched). Use 100-200 to avoid timeouts. rules_path: Optional custom path to sort_rules.json create_folders: Auto-create destination folders that don't exist (default: True)

Returns: Summary of emails scanned, matched, and moved

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
batch_sizeNo
max_emailsNo
rules_pathNo
create_foldersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses reading config files, writing progress logs, skipping already-moved emails, auto-creating folders, and batch processing behavior. No contradictions; all behavioral traits are transparently stated.

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?

Description is well-structured with clear sections (summary, config, logging, batch, args, returns). It is front-loaded with core purpose. Some repetition (config mentioned twice), but overall efficient for the amount of detail.

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

Completeness5/5

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

Given 5 optional parameters, output schema, and many sibling tools, the description is comprehensive. It explains rules file, progress log, batch calling pattern, dry run, and defaults. Output schema existence justifies brief return summary, and all essential aspects are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Although schema coverage is 0% (no parameter descriptions in schema), the free-text 'Args' block fully describes each parameter, including defaults and usage tips (e.g., 'Use 100-200 to avoid timeouts' for batch_size). This adds significant value beyond schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Description clearly states 'Sort inbox emails into folders by sender using IMAP (fast, for Proton Bridge).' It specifies verb (sort), resource (inbox emails), and method (by sender via IMAP), distinguishing it from sibling tools like imap_bulk_move or move_email which are more generic.

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?

Description explains configuration files, batch processing, and dry-run mode, providing clear context for use. It notes 'Call repeatedly until inbox is clean' but does not explicitly exclude alternative tools or mention when not to use this tool compared to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

synchronize_accountA

Ask Apple Mail to synchronize one account or all accounts.

Args: account: Optional account name. When omitted, all accounts are synchronized.

Returns: Summary of synchronization requests. Mail may continue syncing after this tool returns.

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that Mail may continue syncing after the tool returns, which is a key behavioral trait. It also mentions the return type (summary). However, it does not detail side effects or authorization needs, but for a simple sync tool, this is adequate.

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 two clear sections (Args and Returns). Every sentence serves a purpose, and the main action is front-loaded. No wasted words.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter) and the presence of an output schema (not shown but implied), the description adequately covers what the tool does and its return. It could mention error conditions or prerequisites, but the core functionality is well-explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It explains the 'account' parameter: optional, when omitted all accounts are synced. This adds clear meaning beyond the schema's type and default, fully clarifying usage.

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 it asks Apple Mail to synchronize one or all accounts. It uses a specific verb ('synchronize') and resource ('account'), and among sibling tools, no other tool duplicates this purpose, so differentiation is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description explains when to use the tool (to synchronize accounts) and notes that omitting the account parameter syncs all accounts. It lacks explicit guidance on when not to use it or alternatives, but the context is clear enough for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_email_statusA

Update email status - mark as read/unread or flag/unflag emails.

Args: account: Account name (e.g., "Gmail", "Work") action: Action to perform: "mark_read", "mark_unread", "flag", "unflag" subject_keyword: Optional keyword to filter emails by subject sender: Optional sender to filter emails by mailbox: Mailbox to search in (default: "INBOX") max_updates: Maximum number of emails to update (safety limit, default: 10) apply_to_all: Must be True to allow updates without subject_keyword or sender filter message_ids: Exact Apple Mail message ids to update; when provided, filters are ignored flag_color: Optional flag color for action="flag": red, orange, yellow, green, blue, purple, gray

Returns: Confirmation message with details of updated emails

User Preferences: {"workflow": "default", "notifications": "enabled"}

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
senderNo
accountYes
mailboxNoINBOX
flag_colorNo
max_updatesNo
message_idsNo
apply_to_allNo
subject_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses safety limits (max_updates), apply_to_all requirement, and behavior with message_ids. However, it does not discuss permissions or side effects of updating status.

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 well-structured with a header, Args list, and Returns note. It is slightly lengthy (11 lines) but front-loaded with purpose. Every sentence adds value except possibly the user preferences line.

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

Completeness3/5

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

Given the output schema exists, the description covers return values briefly. It includes behavioral details like safety limits and filtering logic. Missing error handling or prerequisites, but adequate for a moderately complex mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema description coverage is 0%, but the description includes an explicit Args section explaining each parameter, its type, and default values. This fully compensates for the lack of 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 updates email status with specific actions (mark read/unread, flag/unflag). It is a specific verb+resource and distinguishes from siblings by listing explicit actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like mark_emails or delete_emails. The description does not provide context for appropriate usage or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 38 tool updatesv2.6.1
    • First observedarchive_emails
    • First observedbulk_move_emails
    • First observedcompose_email
    • First observedcreate_mailbox
    • First observeddelete_emails
    • First observedexport_emails
    • First observedforward_email
    • First observedget_awaiting_reply
    • First observedget_email_thread
    • First observedget_email_with_content
    • First observedget_inbox_overview
    • First observedget_needs_response
    • First observedget_newsletters
    • First observedget_recent_emails
    • First observedget_recent_from_sender
    • First observedget_statistics
    • First observedget_top_senders
    • First observedget_unread_count
    • First observedimap_bulk_move
    • First observedinbox_dashboard
    • First observedlist_accounts
    • First observedlist_email_attachments
    • First observedlist_inbox_emails
    • First observedlist_mailboxes
    • First observedmanage_drafts
    • First observedmanage_trash
    • First observedmark_emails
    • First observedmove_email
    • First observedreply_to_email
    • First observedsave_email_attachment
    • First observedsearch_all_accounts
    • First observedsearch_by_sender
    • First observedsearch_email_content
    • First observedsearch_emails
    • First observedsearch_emails_advanced
    • First observedsort_inbox
    • First observedsynchronize_account
    • First observedupdate_email_status

TDQS

B3.4/5.0

Scored across 38 tools

Disambiguation2/5

Multiple tools have overlapping functionality (e.g., search_emails, search_by_sender, search_email_content, search_all_accounts, search_emails_advanced; mark_emails and update_email_status; move_email, bulk_move_emails, imap_bulk_move). Agents may struggle to select the right tool despite detailed descriptions.

Naming Consistency3/5

Tool names generally follow a verb_noun pattern in snake_case, but verbs are inconsistent: 'get', 'list', 'search', 'find' are used interchangeably for similar retrieval tasks. For example, 'get_recent_emails' vs 'get_recent_from_sender' vs 'search_by_sender'.

Tool Count2/5

38 tools is excessive for an email MCP server. Many tools are highly specialized (e.g., get_newsletters, get_top_senders, get_awaiting_reply), which inflates the count and could overwhelm agents. A more streamlined set of 15-20 tools would be more appropriate.

Completeness4/5

Core email operations are well-covered: reading, searching, composing, replying, forwarding, moving, archiving, deleting, trash management, drafts, mailboxes, statistics, and exports. Minor gaps exist (e.g., contact management, account setup), but the surface is largely complete for typical email workflows.

Maintenance

ActivityActive
ResponsivenessNo issues

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
    A
    quality
    A
    maintenance
    This MCP server allows AI assistants to read, send, search, and manage emails in Apple Mail on macOS. It uses AppleScript to interact with the Mail app locally.
    50
    3,228
    72
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that receives emails on your domain and allows AI assistants to search, read, and manage them via natural language queries.
    1,234
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that gives AI assistants comprehensive access to Apple Mail accounts, enabling email discovery, reading, flag management, and server-side message retrieval.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that provides programmatic access to Apple Mail, enabling AI assistants like Claude to read, send, search, and manage emails on macOS.
    25
    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/isityael/apple-mail-mcp'

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