Skip to main content
Glama
Sendmux

Sendmux Email Inbox API + Sending

Official
by Sendmux

Email Inbox API + Sending by Sendmux

PyPI version Python versions PyPI downloads Licence

Email inbox API, inbound mail, and outbound sending MCP and A2A servers for AI agents, with inbound email, clean JSON parsing, webhooks, and multi-provider routing through Sendmux.

This package is the Sendmux MCP. Keep it separate from any documentation-search MCP used by docs tooling.

Documentation

Related MCP server: mcp-server-lobstermail

Requirements

  • Python 3.10 or newer.

  • A send-capable smx_mbx_* key or owner-approved Sending-resource smx_agent_* token for Sending tools.

  • A mailbox-scoped smx_mbx_* key or scoped smx_agent_* token for Mailbox tools.

  • A root smx_root_* key for Management tools.

Installation

pip install sendmux-mcp

Usage

Run a single local server with the per-surface commands.

SENDMUX_API_KEY=smx_mbx_... sendmux-mcp-mailbox
SENDMUX_API_KEY=smx_root_... sendmux-mcp-management
SENDMUX_API_KEY=smx_mbx_... sendmux-mcp-sending

Run a combined local server with sendmux-mcp.

SENDMUX_MCP_SURFACES=mailbox,sending \
SENDMUX_MAILBOX_API_KEY=smx_mbx_... \
SENDMUX_SENDING_API_KEY=smx_mbx_... \
sendmux-mcp

Run all three local surfaces when you have both key types.

SENDMUX_MCP_SURFACES=mailbox,management,sending \
SENDMUX_MAILBOX_API_KEY=smx_mbx_... \
SENDMUX_MANAGEMENT_API_KEY=smx_root_... \
SENDMUX_SENDING_API_KEY=smx_mbx_... \
sendmux-mcp

The generic sendmux-mcp command also accepts --surface or --surfaces. The wrapper commands select exactly one surface.

Transports

stdio is the default transport for local agent clients.

SENDMUX_API_KEY=smx_mbx_... sendmux-mcp-mailbox --transport stdio

http and streamable-http expose the MCP endpoint over HTTP. HTTP mode defaults to 127.0.0.1:8765/mcp and requires a separate MCP bearer token unless you explicitly opt out.

SENDMUX_API_KEY=smx_mbx_... \
SENDMUX_MCP_HTTP_BEARER_TOKEN=local-mcp-token \
sendmux-mcp-mailbox --transport http --host 127.0.0.1 --port 8765 --path /mcp

/health returns a small JSON health response for the selected surfaces.

Hosted Endpoint

The public hosted MCP endpoint is https://mcp.sendmux.ai/mcp.

For hosted clients, use HTTP transport with OAuth. Do not add manual Authorization headers, API keys, custom OAuth endpoints, or custom scopes unless your client explicitly requires them.

Hosted OAuth clients that omit requested scopes during registration or authorization are supported; the server advertises the hosted scope set through discovery and bearer challenges.

The packaged sendmux-mcp-hosted command runs the hosted server runtime. Local and private deployments should use the local commands above unless you are operating a compatible OAuth-backed hosted environment.

Hosted A2A Endpoint

The same hosted runtime exposes deterministic A2A 1.0 over HTTP+JSON at https://a2a.sendmux.ai/a2a/v1. Discover it from https://a2a.sendmux.ai/.well-known/agent-card.json; OAuth resource metadata is at https://a2a.sendmux.ai/.well-known/oauth-protected-resource.

Send exactly one JSON DataPart to the A2A message:send operation. Its data selects a curated Sendmux operation and supplies that operation's inputs:

{
  "operationId": "managementListDomains",
  "pathParameters": {},
  "query": { "limit": 10 },
  "headers": {},
  "body": null,
  "mailboxId": null
}

operationId uses the same curated operation IDs as the hosted MCP service. OAuth grants are audience-bound to the A2A resource and retain their Sendmux surface and permission limits. The service returns one JSON DataPart containing the upstream status, safe response headers, and JSON body (or bodyBase64 for non-JSON responses).

The A2A endpoint is immediate and stateless: streaming, push notifications, persistent tasks, and task cancellation are not advertised or routed.

Configuration

Setting

Environment

Default

Tool surfaces

SENDMUX_MCP_SURFACES

required for sendmux-mcp; wrapper commands select one surface

API key fallback

SENDMUX_API_KEY

accepted for compatible single-key setups

Mailbox API key

SENDMUX_MAILBOX_API_KEY

required when mailbox is selected unless a compatible fallback is provided

Management API key

SENDMUX_MANAGEMENT_API_KEY

required when management is selected unless a compatible fallback is provided

Sending API key

SENDMUX_SENDING_API_KEY

required when sending is selected unless the fallback key is a send-capable smx_mbx_* key or owner-approved Sending-resource smx_agent_* token

App API base URL

SENDMUX_APP_BASE_URL

https://app.sendmux.ai/api/v1

Sending API base URL

SENDMUX_SENDING_BASE_URL

https://smtp.sendmux.ai/api/v1

Transport

SENDMUX_MCP_TRANSPORT

stdio

HTTP host

SENDMUX_MCP_HOST

127.0.0.1

HTTP port

SENDMUX_MCP_PORT

8765

HTTP path

SENDMUX_MCP_PATH

/mcp

HTTP bearer token

SENDMUX_MCP_HTTP_BEARER_TOKEN

required for HTTP unless opt-out is enabled

Allow unauthenticated HTTP

SENDMUX_MCP_ALLOW_UNAUTHENTICATED_HTTP

false

Allowed browser origins

SENDMUX_MCP_ALLOWED_ORIGINS

no browser origins

Snapshot directory override

SENDMUX_MCP_OPENAPI_INPUT_DIR or OPENAPI_INPUT_DIR

packaged snapshots

App snapshot override

SENDMUX_MCP_APP_OPENAPI

packaged app snapshot

Sending snapshot override

SENDMUX_MCP_SENDING_OPENAPI

packaged sending snapshot

Request timeout

SENDMUX_MCP_TIMEOUT_SECONDS

30

Retry attempts

SENDMUX_MCP_RETRY_MAX_ATTEMPTS

3

Packaged OpenAPI snapshots are the default so released tool names, schemas, and descriptions stay stable. Path, directory, and URL overrides are available for development, canary, and debugging runs.

Tool Surfaces

  • Mailbox: 25 tools for granted mailboxes, profile/session discovery, messages, attachments, bounded message waits, threads, folders, search, counts, and mailbox sends. Requires an smx_mbx_* key or scoped smx_agent_* token. Agent tokens remain limited by server-side scopes; pre-claim self-registered agent tokens do not include email.send.

  • Management: 21 tools for domains, mailboxes, logs, metrics, spend summary, and webhooks. Requires an smx_root_* key.

  • Sending: 5 tools for attachment upload refs, single sends, and batch sends. Requires an smx_mbx_* key or owner-approved Sending-resource smx_agent_* token.

The server rejects keys with the wrong prefix before starting.

Attachment Workflow For Agents

Use mailbox_wait_for_message when a user asks an agent to wait for new mail. The tool is bounded; if it returns matched=false, call it again rather than holding an MCP tool call open indefinitely.

When a message has attachments:

  1. Call mailbox_read_attachment with message_id and attachment_id when you need the attachment contents.

  2. For small text-like attachments, read the returned text.

  3. For binary or oversized attachments, use the returned resource_link / download_url promptly outside model context.

  4. Use mailbox_get_attachment only when metadata is enough or you need to refresh the link.

Use mailbox_upload_attachment for outbound attachments over MCP. It accepts exactly one input mode:

  • file_path for local stdio MCP when the file is inside a client-declared filesystem root.

  • presign_upload_url=true for hosted MCP or shell-capable agents; upload the file to the returned URL with exact headers and no API key, then send with the returned blob_id.

  • content_base64 only for tiny agent-authored files, capped at 32 KiB decoded. If it is too large, switch to file_path, presigned upload, CLI --attach, or SDK file helpers.

file_path and presigned upload modes use the mailbox attachment cap, currently 7,500,000 bytes per attachment. Presigned uploads also pin the exact declared byte length and content type.

For mailbox sends, mailbox_send_message accepts either tiny inline base64 attachment objects (content, filename, content_type) or uploaded attachment references (blob_id, filename, content_type).

For Sending API sends, call sending_upload_attachment with file_path on local stdio MCP, or call sending_create_attachment_upload and PUT bytes outside model context for hosted/shell-capable agents. Then pass {"attachment_id": "att_..."} in sending_send_email.attachments[]. Avoid Sending inline base64 except for tiny generated content.

Console Scripts

  • sendmux-mcp

  • sendmux-mcp-mailbox

  • sendmux-mcp-management

  • sendmux-mcp-sending

  • sendmux-mcp-hosted

Support

Open an issue in Sendmux/sendmux-sdk with the package name, version, command, transport, and request ID from any API error.

Licence

MIT. See the licence file.

Available Tools

30 tools
mailbox_batch_delete_messagesBatch Delete MessagesA
Destructive
Inspect

Use this only when the user explicitly asks to delete messages and supplies or confirms the message IDs. Deletion is a mailbox mutation.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoMessage IDs to delete, maximum 100.
permanentNoWhen true, permanently deletes instead of moving to Trash.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
if_in_stateNoOptional message state token for stale-write protection.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's 'Deletion is a mailbox mutation' adds little new information. It does not detail what happens during deletion (e.g., Trash vs permanent) beyond what the schema provides. The description provides minimal extra behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is two sentences long, front-loading the critical usage instruction. Every sentence is necessary and 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?

For a deletion tool with fully documented schema and an output schema, the description covers the essential usage context (when to use, that it's a mutation). It could briefly mention the 'permanent' parameter's effect, but the schema handles that. Overall, it is sufficiently complete given the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description does not explain parameters or add meaning beyond the schema's own descriptions. It does not compensate for any gaps, but the schema is self-sufficient.

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 function: batch delete messages, and specifies the condition for use (only when user explicitly asks and supplies/confirms IDs). It distinguishes from sibling tools by its delete-specific action and the explicit condition, making it unambiguous.

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

Usage Guidelines4/5

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

The description explicitly states when to use this tool: only when the user asks to delete and provides/confirms IDs. It implies caution with 'Deletion is a mailbox mutation,' but does not explicitly state when not to use it or list alternatives among the many sibling tools. This is clear but lacks explicit exclusions.

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

mailbox_batch_get_messagesBatch Get MessagesA
Read-onlyIdempotent
Inspect

Use this when the user supplies several message IDs or a prior search returns multiple candidates. It avoids repeated single-message calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoMessage IDs to fetch, maximum 100.
partNoBody part to return when body_mode is not `none`.
body_modeNoBody shape to include for each message.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
include_htmlNoWhen true, include HTML content when available.
strip_quotesNoWhen true, remove quoted reply text.
include_linksNoWhen true, include links extracted from the body.
max_body_charsNoMaximum body characters per message before truncation.
include_headersNoHeader detail to include in each message.
strip_signatureNoWhen true, remove detected email signatures.
include_attachmentsNoAttachment detail to include. Contents are not returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide strong behavioral cues (readOnly, idempotent, non-destructive). The description adds little beyond noting efficiency gains, so it meets a baseline level without contradicting annotations.

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

Conciseness5/5

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

The description is concise (two sentences) and front-loaded with the core purpose. Every sentence serves a distinct role—usage and avoidance of alternatives—with no wasted words.

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

Completeness4/5

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

Given the tool's complexity (11 parameters, but all well-documented in schema) and the presence of output schema and rich annotations, the description is adequately complete. It could mention return details, but the annotations and schema fill the gap, so a 4 is appropriate.

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents all parameters. The description does not add extra semantic context for parameters, so it adheres to the baseline of 3.

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

Purpose5/5

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

The description explicitly states the tool's purpose: batching multiple message IDs to avoid repeated single-message calls. It clearly differentiates from the single-message tool by context.

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 guidance on when to use (several IDs or multiple search candidates) and implies when not to (single messages). Although it doesn't name alternatives explicitly, the context with sibling tools makes it understood.

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

mailbox_batch_update_messagesBatch Update MessagesA
Idempotent
Inspect

Use this to mark, flag, move to a folder, or set keywords/labels on multiple messages after the user has confirmed the desired change. Do not use it for read-only tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoMessage IDs to update, maximum 100.
seenNoSet or clear the seen flag.
flaggedNoSet or clear the flagged marker.
keywordsNoMap of message keyword names to booleans. `true` sets the keyword; `false` clears it. Keyword names are normalised to lowercase. Lifecycle keywords such as `$draft` are read-only.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
if_in_stateNoOptional message state token for stale-write protection.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint=false, idempotentHint=true), the description adds behavioral details: keywords normalized to lowercase, lifecycle keywords read-only, user confirmation required. No contradictions with annotations.

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

Conciseness5/5

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

Two concise sentences, front-loaded with purpose and usage constraint. No unnecessary words.

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

Completeness4/5

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

Given 6 parameters, nested objects, and output schema, the description covers core use sufficiently. Could mention potential pitfalls (e.g., conflicting updates) but not required.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. Description adds context for keywords (lifecycle read-only) and mailbox_id (when to omit), but most parameters are already clear from schema. No major added meaning.

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 (mark, flag, move, set keywords/labels) and resource (multiple messages), distinguishing from sibling tools like mailbox_batch_delete_messages or mailbox_batch_get_messages.

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?

Explicitly says when to use ('after user has confirmed the desired change') and when not ('do not use for read-only tasks'). No explicit mention of alternative tools, but context implies siblings cover other operations.

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

mailbox_count_messagesCount MessagesA
Read-onlyIdempotent
Inspect

Use this to count messages matching mailbox filters without listing every result. Follow with mailbox_list_messages only when examples are needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text search query across message fields.
ccNoFilter by CC recipient email address or display name.
toNoFilter by To recipient email address or display name.
bccNoFilter by BCC recipient email address or display name.
bodyNoFilter by message body text.
fromNoFilter by sender email address or display name.
afterNoFilter to messages after this ISO 8601 timestamp.
beforeNoFilter to messages before this ISO 8601 timestamp.
keywordNoRequire this message keyword, such as `$seen`.
subjectNoFilter by subject text.
folder_idNoFilter to messages in this folder ID.
is_unreadNoWhen true, only return unread messages.
thread_idNoFilter to messages in this thread ID.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
header_nameNoHeader name to match with `header_value`.
not_keywordNoExclude messages with this keyword.
header_valueNoHeader value to match with `header_name`.
has_attachmentNoWhen true, only return messages with attachments.
max_size_bytesNoMaximum message size in bytes.
min_size_bytesNoMinimum message size in bytes.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. Description adds that it counts without listing, which is consistent and adds minimal behavioral context beyond what annotations provide. No contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then usage guideline. Every sentence is necessary and efficient. 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 high complexity (20 params), schema covers all parameters, output schema exists, and annotations present. Description is sufficient for the tool's simple purpose. Could mention count limitations or performance, but not required for completeness.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions 'matching filters' generally but does not add specific parameter semantics beyond what the schema already provides. Adequate.

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 counts messages matching filters and distinguishes from mailbox_list_messages by stating it avoids listing every result. This provides a specific verb and resource, and differentiates from a sibling tool.

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

Usage Guidelines5/5

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

Explicitly says to use this tool for counting and follow with mailbox_list_messages only when examples are needed, providing clear when-to-use and when-not-to-use guidance with an alternative named.

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

mailbox_get_attachmentGet Attachment MetadataA
Read-onlyIdempotent
Inspect

Use this after finding a message attachment. It returns metadata plus a fresh short-lived download_url for that exact attachment; fetch the URL promptly, and call this tool again if it expires.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailbox_idNoMailbox public ID when the credential can access more than one mailbox.
message_idYesMessage ID containing the attachment.
attachment_idYesAttachment ID from message metadata.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations confirm idempotent and read-only behavior. The description adds context about the short-lived download URL and the need to call the tool again if it expires, which is valuable beyond annotations.

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

Conciseness5/5

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

The description is concise, consisting of two sentences that front-load usage guidance and key behaviors without waste.

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?

With an output schema present, the description covers behavioral context sufficiently. It explains the URL expiration and usage flow, making it complete for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented. The description does not add extra parameter details, but it is not necessary given the schema's completeness.

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 returns metadata and a download URL for a message attachment, which is specific and informative. It does not explicitly differentiate from sibling tools like mailbox_read_attachment, but the purpose is unambiguous.

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

Usage Guidelines4/5

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

The description advises to use this tool after finding an attachment and to fetch the URL promptly due to expiration, providing actionable usage guidance. It lacks explicit when-not-to-use or alternative tools, but the instructions are clear.

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

mailbox_get_changesGet Mailbox ChangesA
Read-onlyIdempotent
Inspect

Use this to resume mailbox sync from a prior state cursor. Do not use it for ad hoc message search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum change records to return (default 50, max 500).
typesNoComma-separated list: messages, folders, threads, submissions, identities, quotas.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
since_stateNoLegacy message state cursor to resume from.
quotas_since_stateNoQuota state cursor to resume from.
folders_since_stateNoFolder state cursor to resume from.
threads_since_stateNoThread state cursor to resume from.
messages_since_stateNoMessage state cursor to resume from.
identities_since_stateNoIdentity state cursor to resume from.
submissions_since_stateNoSubmission state cursor to resume from.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and no destructiveness. The description adds the sync context but does not explain the return format or pagination behavior. For a sync tool, more detail on what changes are returned would be helpful.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded with primary usage. Perfectly concise.

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

Completeness3/5

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

With 10 parameters and a sync model, the description is minimal. Output schema exists, but the description could mention that it returns a list of changes with new cursors to aid understanding. Adequate but not comprehensive.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for each parameter. The tool description does not add additional semantic value beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'resume mailbox sync' and identifies the resource 'from a prior state cursor'. It also differentiates from ad hoc message search, which distinguishes it from siblings like mailbox_list_messages and mailbox_search_message_snippets.

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

Usage Guidelines5/5

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

Explicitly states when to use ('resume mailbox sync from a prior state cursor') and when not ('do not use it for ad hoc message search'). This provides clear context for tool selection.

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

mailbox_get_identityGet Mailbox IdentityA
Read-onlyIdempotent
Inspect

Use this to read the mailbox sender identity and display name. Use it before composing replies when the sender should match the mailbox identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds no behavioral traits beyond 'read', which is consistent. No contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose then usage guidance. No waste, efficient.

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 simplicity, one optional parameter, output schema exists, and rich annotations, description fully covers purpose and usage context.

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

Parameters3/5

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

Schema coverage is 100% with clear mailbox_id description. Description does not add parameter meaning beyond schema. Baseline 3 applies.

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

Purpose5/5

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

Description clearly states it reads mailbox sender identity and display name, using specific verb+resource. Distinguishes from sibling tools like mailbox_list_identities and mailbox_update_identity.

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?

Explicitly advises use before composing replies to match sender identity, providing clear context. Does not state when not to use or alternatives, but implied.

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

mailbox_get_meGet Mailbox ProfileA
Read-onlyIdempotent
Inspect

Use this to identify the authenticated mailbox before acting on mail. It returns profile details for the mailbox key currently in use.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
If-None-MatchNoWeak ETag from a previous response. Returns 304 when unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, etc. The description adds little beyond stating it returns profile details. No contradictions, but minimal added value beyond annotations.

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

Conciseness5/5

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

Two concise, front-loaded sentences with no wasted words. Every sentence adds 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 low complexity (2 optional parameters, strong annotations, output schema present), the description is complete enough to understand its purpose and usage.

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

Parameters3/5

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

Schema coverage is 100%, so the parameters are fully documented there. The description does not add extra meaning to the parameters beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb ('identify') and resource ('authenticated mailbox'), distinguishing it from sibling tools that operate on other mailboxes or perform different actions.

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

Usage Guidelines4/5

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

The description explicitly recommends using this tool 'before acting on mail', providing clear context for its use. It does not mention alternatives or exclusions, but the context is sufficient.

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

mailbox_get_messageGet MessageA
Read-onlyIdempotent
Inspect

Use this to fetch one message summary or detail by message_id. Use mailbox_list_body or mailbox_list_content when the body content is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
message_idYesMessage ID.
If-None-MatchNoWeak ETag from a previous response. Returns 304 when unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive. The description adds caching behavior via If-None-Match and mentions response type (summary or detail), providing additional context beyond annotations.

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

Conciseness5/5

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

Two concise sentences with front-loaded purpose. No wasted words, efficient and clear.

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

Completeness4/5

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

Output schema exists, so return values are covered. Description addresses caching and alternative tools. Lacks mention of limitations like single message vs batch, but acceptable for this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so schema adequately documents parameters. The description does not add significant parameter-specific meaning beyond what is already in the schema.

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

Purpose5/5

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

The description clearly states the tool fetches a message summary or detail by message_id, using specific verbs and resource. It distinguishes from siblings by noting mailbox_list_body and mailbox_list_content for body content.

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?

It explicitly provides when to use (fetch by message_id) and when not to (use other tools for body content). However, it does not cover all potential alternatives like for attachments or threads.

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

mailbox_get_sessionGet Mailbox SessionA
Read-onlyIdempotent
Inspect

Use this before complex mailbox work to discover supported mailbox capabilities, limits, and endpoint metadata. Do not use it for message search.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
If-None-MatchNoWeak ETag from a previous response. Returns 304 when unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds that the tool discovers capabilities and limits, which is useful context. However, it does not elaborate on what constitutes 'complex mailbox work' or specific behaviors beyond that. With annotations covering safety, a score of 3 is appropriate.

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, consisting of two sentences with no redundancy. It front-loads the primary purpose and immediately includes an exclusion. Every word earns its place.

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

Completeness5/5

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

Given that an output schema exists and annotations are provided, the description sufficiently covers the tool's role and usage context. It is complete for a simple metadata discovery tool with no required parameters.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The tool description does not add any additional parameter semantics beyond what the schema already provides. Baseline 3 is correct.

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: to discover supported mailbox capabilities, limits, and endpoint metadata. It uses a specific verb ('discover') and resource ('mailbox session'). It also distinguishes itself from sibling tools by stating 'Do not use it for message search'.

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

Usage Guidelines5/5

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

Explicitly provides when to use ('before complex mailbox work') and when not to use ('do not use it for message search'). No mention of alternatives but the exclusion is clear.

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

mailbox_get_threadGet ThreadA
Read-onlyIdempotent
Inspect

Use this to read one thread summary by thread_id. Use mailbox_list_thread_messages when the task needs the messages in the thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYesThread ID.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
If-None-MatchNoWeak ETag from a previous response. Returns 304 when unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. Description merely reiterates that it reads a summary, adding no extra behavioral details beyond what annotations provide. No contradiction.

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

Conciseness5/5

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

Two sentences, no filler, front-loaded with the core purpose. Every word is necessary and earns its place.

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

Completeness5/5

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

Tool is simple; with a full output schema present, the description need not explain return values. Annotations are rich, and the description covers the essential behavior. Complete for an agent to understand and invoke correctly.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for all three parameters. The description does not add additional meaning beyond what is already in the schema, achieving the baseline.

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

Purpose5/5

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

Description clearly states 'read one thread summary by thread_id', specifying the action and resource. It distinguishes from sibling tool mailbox_list_thread_messages by indicating that tool is for retrieving messages within the thread.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (for thread summary) and when to use the alternative (mailbox_list_thread_messages for messages in the thread). Provides clear context for decision making.

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

mailbox_list_bodyRead Message BodyA
Read-onlyIdempotent
Inspect

Use this to read the raw or simplified body for a known message_id. Prefer it when the task needs message text but not every MIME detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
partNoBody part to return.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
message_idYesMessage ID.
If-None-MatchNoWeak ETag from a previous response. Returns 304 when unchanged.
max_body_charsNoMaximum body characters to return before truncation.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds useful context about returning raw or simplified body and truncation via max_body_chars, which goes beyond annotations.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded with the core purpose. Every sentence earns its place.

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

Completeness4/5

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

Given the tool has 5 parameters (1 required), an output schema, and comprehensive annotations, the description is complete enough. It covers the core functionality and use case preference, though it could briefly mention output structure (covered by output schema).

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no additional parameter meaning beyond the schema, which already adequately explains each parameter including enum options and conditions.

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 'read the raw or simplified body for a known message_id', specifying the verb and resource. It distinguishes from siblings like mailbox_get_message by noting it's for when you need 'message text but not every MIME detail'.

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 says 'Prefer it when the task needs message text but not every MIME detail', implying an alternative exists. While not naming the sibling directly, the context makes it clear.

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

mailbox_list_contentRead Message ContentB
Read-onlyIdempotent
Inspect

Use this to read structured content for a known message_id. Prefer it when headers, participants, or body parts affect the answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
partNoBody part to return. `auto` prefers text when available.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
message_idYesMessage ID.
include_htmlNoWhen true, include HTML content when available.
strip_quotesNoWhen true, remove quoted reply text.
If-None-MatchNoWeak ETag from a previous response. Returns 304 when unchanged.
include_linksNoWhen true, include links extracted from the body.
max_body_charsNoMaximum body characters to return before truncation.
include_headersNoHeader detail to include in the response.
strip_signatureNoWhen true, remove detected email signatures.
include_attachmentsNoAttachment detail to include. Contents are not returned.

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?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. Description adds 'structured content' context but no additional behavioral traits beyond what annotations provide.

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

Conciseness5/5

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

Two concise sentences with no filler. Each sentence adds value: first states purpose, second suggests when to use.

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

Completeness2/5

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

Despite output schema existing, the description lacks details on return structure, parameter interplay, and handling of the 11 parameters. Adequate for a simple tool but insufficient for this complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description does not add meaning beyond schema; it only mentions message_id implicitly.

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?

Clear verb 'read structured content' and resource 'known message_id'. Mentions context of use (when headers/participants/body parts affect answer) but does not explicitly differentiate from sibling tools like mailbox_get_message or mailbox_list_body.

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?

Provides implied usage context ('Prefer it when headers, participants, or body parts affect the answer') but lacks explicit when-not-to-use guidance or named alternatives among the 29 sibling tools.

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

mailbox_list_foldersList FoldersA
Read-onlyIdempotent
Inspect

Use this to inspect mailbox folders before filing or moving messages. It is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 50, max 100).
cursorNoPagination cursor — the `next_cursor` from the previous response.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, destructiveHint, etc. Description adds 'It is read-only' which aligns with annotations, and the purpose 'inspect' reinforces non-destructive behavior. Adds value beyond annotations by linking to practical use.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no wasted words. Highly efficient and easy to parse.

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

Completeness4/5

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

For a low-complexity read operation with comprehensive annotations and an output schema, the description provides sufficient context. The use case 'before filing or moving messages' adds practical completeness.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for all 3 parameters (limit, cursor, mailbox_id). Description does not add parameter-specific details beyond what schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Clearly states the verb 'inspect' and resource 'mailbox folders' with a specific context 'before filing or moving messages', distinguishing it from sibling tools that deal with messages or sending.

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?

Explicitly advises use 'before filing or moving messages', providing clear context. Does not mention when not to use or alternatives, but the context is sufficient 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.

mailbox_list_granted_mailboxesList Granted MailboxesA
Read-onlyIdempotent
Inspect

Use this first when the token can access more than one mailbox. It searches only the mailboxes granted to this connection and returns IDs to pass as mailbox_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by mailbox ID or email address.
limitNoMaximum results (default 50).
cursorNoCursor from the previous response.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare safe read operation. Description adds detail about scope (only granted mailboxes) and that it returns IDs, consistent with annotations. No contradictions.

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

Conciseness5/5

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

Two sentences, front-loaded with usage guidance, no redundant information. Every sentence is essential.

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 simple tool, rich annotations, and output schema, description provides necessary context: when to use, what it returns, and how output is used. No gaps.

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

Parameters3/5

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

Schema has 100% parameter description coverage. Description does not add new meaning to parameters, only mentions the return usage. Baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states it lists granted mailboxes and explicitly says to use it when the token can access more than one mailbox. Distinguishes from siblings by focusing on mailbox enumeration for multi-mailbox scenarios.

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?

Explicitly tells when to use ('first when the token can access more than one mailbox') and what the output is for (pass as mailbox_id). Lacks explicit when not to use, but implied.

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

mailbox_list_identitiesList Mailbox IdentitiesA
Read-onlyIdempotent
Inspect

Use this to list sender identities available to the mailbox. Prefer mailbox_get_identity when only the default identity is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 50, max 100).
cursorNoPagination cursor — the `next_cursor` from the previous response.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint. Description adds no further behavioral info beyond restating the operation. Adequate but not enhanced.

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

Conciseness5/5

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

Two sentences, zero wasted words. First sentence states purpose, second provides usage guidance with alternative tool. Excellent 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?

Tool is simple, has output schema, no required parameters, and annotations cover safety/idempotence. Description covers purpose and key alternative usage, making it complete for an agent.

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

Parameters3/5

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

Schema coverage is 100%; all three parameters are documented in the schema. Description does not add extra meaning beyond what the schema already provides. Baseline score of 3 applies.

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

Purpose5/5

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

Clearly states purpose: 'list sender identities available to the mailbox'. Distinguishes from sibling mailbox_get_identity by noting preference when only default is needed.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (list all identities) and when to prefer an alternative (use mailbox_get_identity for default only). Clear differentiation.

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

mailbox_list_messagesList MessagesA
Read-onlyIdempotent
Inspect

Use this to scan mailbox messages by cursor without fetching full bodies. Filter by folder_id, keyword/not_keyword, dates, sender/recipient, text query, unread state, or has_attachment; attachment metadata includes a short-lived download_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text search query across message fields.
ccNoFilter by CC recipient email address or display name.
toNoFilter by To recipient email address or display name.
bccNoFilter by BCC recipient email address or display name.
bodyNoFilter by message body text.
fromNoFilter by sender email address or display name.
afterNoFilter to messages after this ISO 8601 timestamp.
limitNoMaximum results (default 50, max 100).
beforeNoFilter to messages before this ISO 8601 timestamp.
cursorNoPagination cursor — the `next_cursor` from the previous response.
keywordNoRequire this message keyword, such as `$seen`.
sort_byNoMessage field to sort by.
subjectNoFilter by subject text.
folder_idNoFilter to messages in this folder ID.
is_unreadNoWhen true, only return unread messages.
thread_idNoFilter to messages in this thread ID.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
header_nameNoHeader name to match with `header_value`.
not_keywordNoExclude messages with this keyword.
header_valueNoHeader value to match with `header_name`.
has_attachmentNoWhen true, only return messages with attachments.
max_size_bytesNoMaximum message size in bytes.
min_size_bytesNoMinimum message size in bytes.
sort_directionNoSort direction.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds key behaviors: cursor-based pagination, no full body fetch, and attachment metadata includes a short-lived download_url, which goes beyond annotations.

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

Conciseness5/5

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

Single sentence that is dense with information: scanning, no full bodies, cursor pagination, filter categories, attachment metadata. No wasted words, front-loaded with the main action.

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

Completeness4/5

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

Given the large parameter count (24) and existing output schema, the description covers the essential use case and notable feature (short-lived download URL). Could mention pagination cursor behavior slightly more, but overall adequate.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all 24 parameters. The description provides a high-level overview of filter types (folder_id, keyword, dates, etc.) but does not add semantic depth beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the tool's purpose: 'scan mailbox messages by cursor without fetching full bodies.' It clearly distinguishes from sibling tools like mailbox_get_message, which fetch full bodies, and lists filtering capabilities.

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

Usage Guidelines4/5

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

The description implies when to use (scanning/listings without full bodies) and provides filtering context. However, it does not explicitly state when not to use or mention alternatives like mailbox_get_message or mailbox_batch_get_messages.

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

mailbox_list_thread_messagesList Thread MessagesA
Read-onlyIdempotent
Inspect

Use this to list messages inside a known thread. Use message body tools only for messages that need full content.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoMessage sort direction within the thread.
limitNoMaximum results (default 50, max 100).
cursorNoPagination cursor — the `next_cursor` from the previous response.
thread_idYesThread ID.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds no new behavioral traits beyond listing messages, which is implied by name.

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

Conciseness5/5

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

Two concise sentences, front-loaded with purpose, 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 output schema exists and schema covers all parameters, the description is complete for a simple list tool. Could mention pagination but not necessary.

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

Parameters3/5

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

Schema coverage is 100%, describing all 5 parameters. Description does not add additional meaning beyond the schema, so baseline of 3 is appropriate.

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

Purpose5/5

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

Clearly states 'list messages inside a known thread' with specific verb and resource. Distinguishes from message body tools by saying to use those only for full content.

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?

Explicitly says when to use (known thread) and when not (use message body tools for full content). However, no direct comparison to siblings like mailbox_list_messages.

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

mailbox_list_threadsList ThreadsA
Read-onlyIdempotent
Inspect

Use this to scan conversation threads without loading every message. Continue with next_cursor only when additional threads are needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text search query across thread messages.
afterNoFilter to threads updated after this ISO 8601 timestamp.
limitNoMaximum results (default 50, max 100).
beforeNoFilter to threads updated before this ISO 8601 timestamp.
cursorNoPagination cursor — the `next_cursor` from the previous response.
folder_idNoFilter to threads with messages in this folder ID.
is_unreadNoWhen true, only return threads with unread messages.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
participantNoFilter by participant email address or display name.
has_attachmentNoWhen true, only return threads with attachments.
sort_directionNoSort direction.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds the behavioral insight that it doesn't load every message, but no further details like permissions or rate limits.

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

Conciseness5/5

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

Extremely concise, two sentences front-loading the core purpose and pagination advice with no wasted words.

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

Completeness4/5

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

Given strong annotations, full schema coverage, and output schema, the description is mostly complete, but lacks guidance on when to use alternative thread/message tools or other filtering capabilities.

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 100% coverage, so baseline is 3. The description adds guidance on cursor usage ('Continue with next_cursor'), which provides additional 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?

Description clearly states 'scan conversation threads without loading every message,' which is a specific verb+resource that distinguishes from sibling tools like mailbox_list_messages (loads messages) and mailbox_get_thread (single thread).

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 when to use (scanning without messages) and cursor continuation guidance, but does not explicitly list when not to use or alternatives beyond the cursor note.

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

mailbox_read_attachmentRead AttachmentA
Read-onlyIdempotent
Inspect

Use this after finding a message attachment when you need the attachment contents. Text-like attachments are downloaded server-side and returned as text, so agents do not need a generic web_fetch tool. Binary or oversized attachments return metadata plus a fresh download link.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoRead mode: auto, metadata, text, or resource_link. auto inlines small text attachments.auto
mailbox_idNoMailbox public ID when the credential can access more than one mailbox.
message_idYesMessage ID containing the attachment.
attachment_idYesAttachment ID from message metadata.
max_text_bytesNoMaximum text bytes to return inline. Defaults to 262144 and is capped at 1048576.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark it as read-only and idempotent. The description adds essential behavioral details: text attachments are returned as text server-side, binary/oversized return metadata+link. No contradiction.

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

Conciseness5/5

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

Two concise sentences, front-loaded with key usage direction. No wasted words.

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

Completeness4/5

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

Given the presence of an output schema and rich annotations, the description covers the essential usage context and behavior variants. Minor gap: could hint at output format, but not required.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully documents parameters. The description adds minimal extra context (e.g., 'auto' mode inlines small text) but does not elaborate on each parameter 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: read an attachment's contents after finding it. It distinguishes from generic web_fetch tools and specifies behavior for text versus binary attachments.

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 when to use (after finding attachment) and explicitly advises against using a generic web_fetch tool. Could add explicit when-not scenarios, but context is sufficient.

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

mailbox_search_message_snippetsSearch Message SnippetsA
Read-onlyIdempotent
Inspect

Use this to search message snippets by query text. Narrow with folder_id, keyword/not_keyword, dates, sender/recipient, unread state, or has_attachment; use returned message IDs with a read tool before making content-specific claims.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch text used to generate snippets.
ccNoFilter by CC recipient email address or display name.
toNoFilter by To recipient email address or display name.
bccNoFilter by BCC recipient email address or display name.
bodyNoFilter by message body text.
fromNoFilter by sender email address or display name.
afterNoFilter to messages after this ISO 8601 timestamp.
limitNoMaximum results (default 50, max 100).
beforeNoFilter to messages before this ISO 8601 timestamp.
keywordNoRequire this message keyword, such as `$seen`.
subjectNoFilter by subject text.
folder_idNoFilter to messages in this folder ID.
is_unreadNoWhen true, only return unread messages.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
header_nameNoHeader name to match with `header_value`.
message_idsNoComma-separated message IDs, maximum 100.
not_keywordNoExclude messages with this keyword.
header_valueNoHeader value to match with `header_name`.
has_attachmentNoWhen true, only return messages with attachments.
max_size_bytesNoMaximum message size in bytes.
min_size_bytesNoMinimum message size in bytes.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive. The description adds the important behavioral trait that snippets are not full content and a follow-up read is needed, which is valuable beyond annotations.

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

Conciseness5/5

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

Two sentences with no wasted words. The purpose is front-loaded, and the second sentence provides necessary usage guidance and caveat.

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 (21 parameters, output schema exists), the description covers the core purpose, narrowing filters, and the critical caveat about snippet limitations. No major gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents each parameter. The description mentions filter categories but adds no specific parameter details beyond that. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb (search) and resource (message snippets), and differentiates from siblings by noting that returned IDs should be used with a read tool for content-specific claims, implying this tool returns snippets, not full messages.

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 explicit guidance to use returned message IDs with a read tool before making content-specific claims, and lists many narrowing filters. It does not explicitly state when not to use, but the context is clear.

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

mailbox_send_messageSend Mailbox MessageAInspect

Use this to send a message from the authenticated mailbox. For attachments, call mailbox_upload_attachment first using file_path, presign_upload_url, or tiny content_base64, then pass the returned blob_id. Include an Idempotency-Key for retries.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC recipients.
toNoPrimary recipients.
bccNoBCC recipients.
fromNoSender address. Defaults to mailbox identity.
subjectNoSubject line for the outgoing email.
reply_toNoReply-To recipients.
html_bodyNoHTML body.
text_bodyNoPlain text body.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
attachmentsNoAttachments to send with the message.
custom_headersNoCustom headers to include.
Idempotency-KeyNoClient-chosen unique key to safely retry the request. Cached for 24h per (mailbox, endpoint, key). Different body with same key returns 409 idempotency_conflict.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false. Description appropriately adds context about idempotency key usage for retries and attachment workflow. No contradictions.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then critical workflow. No redundancy or filler.

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 12 parameters, nested objects, and existing output schema, the description covers essential workflow (attachments, idempotency) without needing to list every parameter. Adequate for agent to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100%, but description adds workflow meaning: attachment parameter requires prior upload, and Idempotency-Key is highlighted for retries. This goes beyond schema details.

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 specifies 'send a message from the authenticated mailbox' with a clear verb and resource. It distinguishes from sibling tools like mailbox_batch_delete_messages, mailbox_list_messages, and sending_send_email by focusing on message sending from the authenticated mailbox.

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 for attachments (call mailbox_upload_attachment first) and idempotency (include Idempotency-Key). Does not explicitly state when not to use, but the context is clear for sending messages.

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

mailbox_update_identityUpdate Mailbox IdentityA
Idempotent
Inspect

Use this only when the user explicitly asks to change sender identity details. Do not use it for one-off message composition.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDefault sender name. Send null or an empty string to clear it.
mailbox_idNoMailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox.
html_signatureNoHTML signature appended to Mailbox API sends that include html_body.
text_signatureNoPlain text signature appended to Mailbox API sends that include text_body.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

The description is minimal, stating only that it changes sender identity details. While annotations provide idempotentHint=true and readOnlyHint=false, the description doesn't disclose side effects, permissions, or update behavior (e.g., partial vs full replacement). It does not contradict annotations.

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

Conciseness5/5

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

The description is concise and front-loaded with two sentences that earn their place, containing no redundant or unnecessary 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 the tool's simplicity (4 optional params, output schema exists, annotations present), the description covers the core purpose. Minor gap: no guidance on relationship to mailbox_get_identity or identity management workflow, but sufficient for basic use.

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

Parameters3/5

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

The input schema has 100% description coverage with clear parameter documentation (e.g., 'Send null or an empty string to clear it.'). The description adds no additional semantic value beyond the schema, meeting the baseline expectation.

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 is for changing sender identity details and explicitly distinguishes it from one-off message composition, providing a specific verb-resource pairing that differentiates it from siblings like sending_send_email.

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

Usage Guidelines4/5

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

The description gives explicit guidance on when to use ('only when the user explicitly asks') and what not to use for ('one-off message composition'), but does not mention alternative tools or when not to use beyond the given exclusion.

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

mailbox_upload_attachmentUpload AttachmentAInspect

Use this before sending a mailbox attachment. Cheapest mode: file_path on local stdio MCP reads the user-approved local file without putting bytes in model context. Hosted or shell-capable agents should set presign_upload_url=true with filename, content_type, and size_bytes, then PUT the file to the returned short-lived URL promptly and send the returned blob_id. Inline content_base64 is a last resort for tiny agent-authored files only and is capped at 32 KiB decoded.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesFilename to use when sending the uploaded attachment.
file_pathNoLocal file path for stdio MCP only. The path must be inside a client-declared MCP root; hosted MCP rejects it.
mailbox_idNoMailbox public ID when the credential can access more than one mailbox.
size_bytesNoExact byte size required when presign_upload_url=true.
content_typeNoMIME type to store with the upload, for example application/pdf.application/octet-stream
content_base64NoLast-resort inline base64 for tiny agent-authored files only. Decoded content must be at most 32 KiB; use file_path or presign_upload_url for real files.
presign_upload_urlNoWhen true, return a short-lived signed PUT URL instead of reading bytes. Provide size_bytes and upload with a shell/client promptly.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Description adds behavioral context beyond annotations: cheapest mode, last resort, 32 KiB cap, and that presign returns a short-lived URL for prompt upload. No contradictions with annotations.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, no wasted words. Each sentence adds essential information about the three modes.

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?

Description is thorough given the tool complexity (7 params, 1 required). Covers all upload modes, constraints, and workflow steps. Output schema exists, so return values are documented elsewhere.

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 100%, so baseline is 3. Description adds meaningful usage context for each parameter (e.g., 'cheapest mode', 'last resort, tiny agent-authored files only'), exceeding 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?

Clearly states the tool is for uploading an attachment before sending a mailbox message. Distinguishes three modes (file_path, presign_upload_url, content_base64) with specific use cases, which differentiates it from siblings.

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 on when to use each mode: file_path for local stdio, presign for hosted/shell, content_base64 only as last resort. Implies context but doesn't explicitly exclude alternative tools.

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

mailbox_wait_for_messageWait For MessageA
Read-onlyIdempotent
Inspect

Use this to wait briefly for new mail instead of manual polling. It polls for up to 25 seconds, returns a matching message with attachment metadata when found, or a clean no_message result so you can call again.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOptional full-text query to match.
afterNoISO 8601 lower bound for received_at. Omit to wait for messages received after this call starts.
keywordNoOptional keyword/label that the message must have, such as $seen.
subjectNoOptional subject text filter.
folder_idNoOptional folder ID filter.
from_emailNoOptional sender email address or display-name filter.
mailbox_idNoMailbox public ID when the credential can access more than one mailbox.
has_attachmentNoWhen true, wait only for messages with attachments.
timeout_secondsNoMaximum seconds to wait. Capped at 25 seconds so MCP clients do not hold a tool call open indefinitely.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Discloses polling duration (up to 25s), return types (matching message with attachment metadata or no_message), and clean exit for retries. Annotations already indicate readOnly and idempotent, so description adds behavioral nuance beyond annotations.

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

Conciseness5/5

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

Two concise sentences front-loaded with purpose and behavior. No redundancy or irrelevant 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?

Core behavior is well-covered: polling, timeout, return types. With 9 optional parameters and an existing output schema, the description sufficiently sets expectations for a waiting tool, though could mention the polling interval or retry mechanism.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described. The description adds little beyond schema (mentions 'attachment metadata' indirectly), so baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states verb 'wait for new mail' with resource 'mailbox' and distinguishes from sibling tools by emphasizing polling instead of manual polling. Specific behavior (up to 25 seconds, returns message or no_message) makes purpose unambiguous.

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

Usage Guidelines4/5

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

Provides context 'instead of manual polling' which implies usage scenario, but does not explicitly list when not to use or alternative tools. However, given sibling tools are non-polling, the guidance is sufficient.

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

sending_create_attachment_uploadCreate Attachment UploadAInspect

Use this when a remote or shell-capable agent needs a short-lived upload URL for an outbound Sending API attachment. Provide filename, content_type, and exact size_bytes, PUT the file bytes outside model context with the returned headers, then pass the returned attachment_id to sending_send_email.

ParametersJSON Schema
NameRequiredDescriptionDefault
sha256NoOptional SHA-256 hex digest for the upload bytes.
filenameYesFilename to associate with the uploaded attachment.
size_bytesYesExact byte size that will be uploaded.
content_typeNoMIME type expected for the upload.
Idempotency-KeyNoOptional client-generated key to make the request idempotent for 24 hours. Replays under the same key return the cached response; a reused key with a different body returns 409 idempotency_conflict.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate mutation (readOnlyHint=false) and non-destructive nature. The description adds that the URL is short-lived and requires out-of-model-context PUT of file bytes. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences convey when to use, what to provide, and the next step. No superfluous information; front-loaded with 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?

The tool description covers the essential workflow (get URL, upload, use attachment_id in sending_send_email). An output schema exists, so return details are not required. Could mention idempotency key behavior but schema covers it.

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

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions. The description reiterates the key parameters (filename, content_type, size_bytes) but does not add new 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 tool creates a short-lived upload URL for an outbound Sending API attachment. It distinguishes from siblings like sending_upload_attachment and sending_send_email by framing a specific multi-step workflow.

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 says 'Use this when a remote or shell-capable agent needs...' and provides a step-by-step process. It lacks explicit when-not-to-use scenarios but is contextually clear enough.

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

sending_get_attachmentGet Attachment MetadataA
Read-onlyIdempotent
Inspect

Use this to inspect a temporary Sending attachment_id before sending. It returns metadata only, not file bytes.

ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_idYesTemporary attachment ID returned by an upload endpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Adds value beyond readOnlyHint and other annotations by clarifying that the tool returns 'metadata only, not file bytes'. This tells the agent exactly what to expect and is consistent with the safe, idempotent nature.

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

Conciseness5/5

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

Two sentences, front-loaded with actionable guidance. Every word serves a purpose; no redundancy.

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 excellent annotations, 100% schema coverage, and an output schema, the description is complete. It clearly states the tool's purpose, behavior, and usage context without needing to reiterate structural details.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions 'temporary Sending attachment_id', which confirms the parameter's role but does not add new semantic detail beyond the schema's description.

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

Purpose5/5

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

The description uses a specific verb 'inspect' and resource 'temporary Sending attachment_id', clearly distinguishing it from sibling tools like mailbox_get_attachment and sending_send_email. It states the tool's role in the workflow ('before sending').

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 context for when to use ('before sending'), but does not include exclusions or alternatives beyond what is implicit. The mention of 'not file bytes' helps avoid confusion with tools that return full content.

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

sending_send_emailSend EmailAInspect

Use this to send one outbound email through the sending API. For attachments, call sending_upload_attachment first for local/tiny content or sending_create_attachment_upload for delegated file PUTs, then pass attachments as attachment_id refs. Inline base64 is only for tiny generated content. Include an Idempotency-Key so retries do not create duplicate sends.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC recipients (subject to 50 total To, CC, and BCC recipients)
toYesPrimary recipient
bccNoBCC recipients (subject to 50 total To, CC, and BCC recipients)
fromYesSender address
subjectYesEmail subject line (max 998 chars, RFC 5322)
reply_toNoReply-To address
html_bodyYesHTML email content (max 25MB)
text_bodyNoPlain text alternative (max 25MB)
attachmentsNoFile attachments (max 10). Use attachment_id refs for uploaded files.
return_pathNoEnvelope sender for VERP support
custom_headersNoCustom X-* headers to include in the email
Idempotency-KeyNoOptional client-generated key to make the request idempotent for 24 hours. Replays under the same key return the cached response; a reused key with a different body returns 409 idempotency_conflict.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations: attachment pre-upload workflow, inline base64 limitation, and idempotency behavior. It does not mention response format or rate limits, but annotations already provide read/write hints and the output schema covers the response. No contradiction with the annotations.

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

Conciseness5/5

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

The description is four sentences, each earning its place: purpose, attachment workflow, inline base64 constraint, and idempotency guidance. It is front-loaded with the core action and avoids any filler.

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 12 parameters, nested objects, and rich schema, the description covers the main use case (send a single email), the critical attachment workflow, and idempotency. The output schema handles return values, so the description is sufficiently complete without redundancy.

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 100%, the description adds essential semantics not present in the schema: how attachments should be structured (pre-upload then reference) and the constraint that inline base64 is only for tiny content. It also explains the purpose of the Idempotency-Key, giving the agent deeper understanding of parameter 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 the tool sends one outbound email via the sending API, using the specific verb 'send' and resource 'outbound email'. It distinguishes itself from sibling tools like sending_send_email_batch by emphasizing 'one' email, and from attachment upload tools via the attachment workflow.

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

Usage Guidelines5/5

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

The description explicitly guides when to use this tool for sending a single email and names alternative tools for related tasks (sending_upload_attachment, sending_create_attachment_upload). It also clarifies when to use inline base64 vs attachment_id refs and advises including an Idempotency-Key, giving concrete operational guidance.

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

sending_send_email_batchSend Email BatchAInspect

Use this to send multiple outbound emails in one request. For attachments, prefer uploaded attachment_id refs; avoid inline base64 except for tiny generated content. Use it only when the user confirms every recipient and message.

ParametersJSON Schema
NameRequiredDescriptionDefault
messagesYesArray of email messages to send (max 100)
Idempotency-KeyNoOptional client-generated key to make the request idempotent for 24 hours. Replays under the same key return the cached response; a reused key with a different body returns 409 idempotency_conflict.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it specifies a safety requirement (user confirmation) and attachment best practices. It does not contradict any annotations (readOnlyHint=false aligns with sending). While it doesn't mention idempotency or side effects, the annotations already indicate the tool is non-idempotent and non-read-only, so the description provides reasonable added value.

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

Conciseness5/5

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

The description is highly concise at three sentences, front-loads the core purpose, and every sentence provides actionable guidance. No filler or 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?

Given the tool's complexity (batch send with two parameters, including a nested messages array), the description covers the essential use case, safety condition, and attachment strategy. An output schema exists (per context), so return-value details are not necessary. It could explicitly mention the batch/single distinction, but the name and title already convey this.

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

Parameters3/5

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

Schema coverage is 100%, so the description doesn't need to explain each parameter. It adds a note about preferring attachment IDs, but the schema already states 'Use attachment_id refs for uploaded files.' The description does not significantly enhance parameter understanding beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb and resource: 'send multiple outbound emails in one request.' This distinguishes it from the sibling tool sending_send_email, which handles single emails, by explicitly mentioning the batch capability.

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?

It provides a clear usage condition ('Use it only when the user confirms every recipient and message') and practical attachment guidance (prefer uploaded attachment_id refs). However, it does not explicitly contrast this with the single-send sibling tool, though the name and context imply the distinction.

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

sending_upload_attachmentUpload AttachmentAInspect

Use this before sending a Sending API attachment. Cheapest mode: file_path on local stdio MCP reads the user-approved local file without putting bytes in model context. Hosted agents should use sending_create_attachment_upload and PUT the file outside model context. Inline content_base64 is a last resort for tiny agent-authored files only and is capped at 32 KiB decoded.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesFilename to use when sending the uploaded attachment.
file_pathNoLocal file path for stdio MCP only. The path must be inside a client-declared MCP root; hosted MCP rejects it.
content_typeNoMIME type to store with the upload, for example application/pdf.application/octet-stream
content_base64NoLast-resort inline base64 for tiny agent-authored files only. Decoded content must be at most 32 KiB; use file_path for real local files.
idempotency_keyNoOptional Idempotency-Key for safely retrying the upload.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations are present (readOnlyHint: false, etc.) and the description adds useful behavioral details: file_path reads local file without putting bytes in model context, inline is last resort, idempotency_key for retries. However, the idempotency_key suggestion slightly contradicts idempotentHint: false, but not severely.

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 slightly lengthy but each sentence adds value. Front-loaded with main purpose, then breaks into modes. No fluff, but could be slightly more concise.

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 parameters, 1 required, 100% schema coverage, and an output schema (present but not shown), the description is complete. It covers main purpose, modes, constraints, and warnings. No gaps.

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 100%. Description adds meaning beyond schema: 'file_path on local stdio MCP reads the user-approved local file without putting bytes in model context' for file_path; 'last-resort inline base64 for tiny agent-authored files only' with size cap for content_base64. Greatly aids understanding.

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 is for uploading an attachment for the Sending API, and distinguishes it from siblings like sending_create_attachment_upload and mailbox_upload_attachment by detailing different modes (file_path for local, hosted agents using other tool, inline as last resort).

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

Usage Guidelines5/5

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

Explicitly explains when to use file_path (local stdio MCP) vs. hosted agents should use sending_create_attachment_upload, and warns that inline content_base64 is a last resort capped at 32 KiB. This provides clear context for selection.

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. 2 tool updatesv1.0.1
    • Changedsending_send_email4 fields changed
      • changedInput schema / properties / bcc / description
        Previous value: -"BCC recipients (max 100)"New value: +"BCC recipients (subject to 50 total To, CC, and BCC recipients)"
      • changedInput schema / properties / bcc / maxItems
        Previous value: -100New value: +49
      • changedInput schema / properties / cc / description
        Previous value: -"CC recipients (max 100)"New value: +"CC recipients (subject to 50 total To, CC, and BCC recipients)"
      • changedInput schema / properties / cc / maxItems
        Previous value: -100New value: +49
    • Changedsending_send_email_batch4 fields changed
      • changedInput schema / properties / messages / items / properties / bcc / description
        Previous value: -"BCC recipients (max 100)"New value: +"BCC recipients (subject to 50 total To, CC, and BCC recipients)"
      • changedInput schema / properties / messages / items / properties / bcc / maxItems
        Previous value: -100New value: +49
      • changedInput schema / properties / messages / items / properties / cc / description
        Previous value: -"CC recipients (max 100)"New value: +"CC recipients (subject to 50 total To, CC, and BCC recipients)"
      • changedInput schema / properties / messages / items / properties / cc / maxItems
        Previous value: -100New value: +49
  2. 30 tool updatesv1.0.0
    • First observedmailbox_batch_delete_messages
    • First observedmailbox_batch_get_messages
    • First observedmailbox_batch_update_messages
    • First observedmailbox_count_messages
    • First observedmailbox_get_attachment
    • First observedmailbox_get_changes
    • First observedmailbox_get_identity
    • First observedmailbox_get_me
    • First observedmailbox_get_message
    • First observedmailbox_get_session
    • First observedmailbox_get_thread
    • First observedmailbox_list_body
    • First observedmailbox_list_content
    • First observedmailbox_list_folders
    • First observedmailbox_list_granted_mailboxes
    • First observedmailbox_list_identities
    • First observedmailbox_list_messages
    • First observedmailbox_list_thread_messages
    • First observedmailbox_list_threads
    • First observedmailbox_read_attachment
    • First observedmailbox_search_message_snippets
    • First observedmailbox_send_message
    • First observedmailbox_update_identity
    • First observedmailbox_upload_attachment
    • First observedmailbox_wait_for_message
    • First observedsending_create_attachment_upload
    • First observedsending_get_attachment
    • First observedsending_send_email
    • First observedsending_send_email_batch
    • First observedsending_upload_attachment

TDQS

A4.1/5.0
Disambiguation5/5

Tools are clearly separated by domain (mailbox vs sending) and have distinct purposes. Batch vs individual operations are well-differentiated, and read vs write tools are unambiguous.

Naming Consistency5/5

All tools follow a consistent pattern of 'domain_verb_noun' (e.g., mailbox_batch_delete_messages, sending_send_email). No mixing of conventions.

Tool Count4/5

30 tools is slightly above the typical range but is justified by the two domains (inbox and sending). Each tool serves a clear, non-redundant purpose.

Completeness4/5

Covers core email operations like CRUD for messages, attachments, threads, folders, identities, and sending. Minor gaps like missing a way to update individual message flags outside batch, but overall comprehensive.

Maintenance

ActivityActive
ResponsivenessWithin a week

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
    D
    maintenance
    MCP server for Sendook - an AI email communication platform. Enables AI agents to send and receive emails, manage inboxes, threads, and webhooks programmatically.
    16
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Official mailbox.bot MCP server for AI agents. Send letters, certified mail, postcards, and receive scanned inbound physical mail with sandbox keys, approval controls, tracking, and webhooks.
    29
    114
    2
    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/Sendmux/sendmux-sdk'

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