Sendmux Email Inbox API + Sending
OfficialThis MCP server provides tools to manage and send email through the Sendmux mailbox API. You can read, search, and manage mailbox messages, folders, and threads, as well as send email with attachments.
Capabilities:
Search messages: full-text search with filters (sender, subject, dates, keywords, read state), returning up to 100 results (mailbox_search_message_snippets).
List and inspect messages: list messages with filters and pagination, read full messages with headers/body/attachments, and list messages in a thread.
Message metadata and management: view message metadata (attachment links), batch delete messages (max 100), and list/filter mailbox folders.
Mailbox sync: resume incremental mailbox sync from per-type cursors (messages, folders, threads, quotas).
Send mail: compose and send messages with optional inline attachments (base64 or uploaded attachment IDs), plus a separate low-level send tool (mailbox_send_message for sending).
Attachment upload: upload attachments by path, base64, or presigned URL for use in drafts/sends; supports up to 7.5MB per attachment.
Attachment access: fetch attachment content (base64 up to 32MB, otherwise return a download URL), or get attachment metadata.
Search: search messages by query with common filters (subject, from, before, after, folder, limit, etc.);
Thread inspection: list threads with filters (folder, unread, query, participant) and pinned status.
Folder management: rename and set folder properties.
Mailbox identity inspection: list identities for the mailbox, and inspect individual identity details.
Presigned upload and download URLs are valid for a limited time, so download or upload as soon as possible. When content is too large to return inline, download via resource_link or download_url promptly rather than holding it in context.
Email Inbox API + Sending by Sendmux
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
Sendmux docs: sendmux.ai/docs
Management API reference: sendmux.ai/docs/api/introduction
Mailbox API reference: sendmux.ai/docs/mailbox-api/introduction
Sending API reference: sendmux.ai/docs/sending-api/introduction
Source repository: Sendmux/sendmux-sdk
Related MCP server: mcp-server-lobstermail
Requirements
Python 3.10 or newer.
A send-capable
smx_mbx_*key or owner-approved Sending-resourcesmx_agent_*token for Sending tools.A mailbox-scoped
smx_mbx_*key or scopedsmx_agent_*token for Mailbox tools.A root
smx_root_*key for Management tools.
Installation
pip install sendmux-mcpUsage
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-sendingRun 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-mcpRun 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-mcpThe 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 stdiohttp 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 |
| required for |
API key fallback |
| accepted for compatible single-key setups |
Mailbox API key |
| required when mailbox is selected unless a compatible fallback is provided |
Management API key |
| required when management is selected unless a compatible fallback is provided |
Sending API key |
| required when sending is selected unless the fallback key is a send-capable |
App API base URL |
|
|
Sending API base URL |
|
|
Transport |
|
|
HTTP host |
|
|
HTTP port |
|
|
HTTP path |
|
|
HTTP bearer token |
| required for HTTP unless opt-out is enabled |
Allow unauthenticated HTTP |
|
|
Allowed browser origins |
| no browser origins |
Snapshot directory override |
| packaged snapshots |
App snapshot override |
| packaged app snapshot |
Sending snapshot override |
| packaged sending snapshot |
Request timeout |
|
|
Retry attempts |
|
|
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:
25tools for granted mailboxes, profile/session discovery, messages, attachments, bounded message waits, threads, folders, search, counts, and mailbox sends. Requires ansmx_mbx_*key or scopedsmx_agent_*token. Agent tokens remain limited by server-side scopes; pre-claim self-registered agent tokens do not includeemail.send.Management:
21tools for domains, mailboxes, logs, metrics, spend summary, and webhooks. Requires ansmx_root_*key.Sending:
5tools for attachment upload refs, single sends, and batch sends. Requires ansmx_mbx_*key or owner-approved Sending-resourcesmx_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:
Call
mailbox_read_attachmentwithmessage_idandattachment_idwhen you need the attachment contents.For small text-like attachments, read the returned
text.For binary or oversized attachments, use the returned
resource_link/download_urlpromptly outside model context.Use
mailbox_get_attachmentonly 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_pathfor local stdio MCP when the file is inside a client-declared filesystem root.presign_upload_url=truefor hosted MCP or shell-capable agents; upload the file to the returned URL with exact headers and no API key, then send with the returnedblob_id.content_base64only for tiny agent-authored files, capped at32 KiBdecoded. If it is too large, switch tofile_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-mcpsendmux-mcp-mailboxsendmux-mcp-managementsendmux-mcp-sendingsendmux-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 toolsmailbox_batch_delete_messagesBatch Delete MessagesADestructiveInspect
Use this only when the user explicitly asks to delete messages and supplies or confirms the message IDs. Deletion is a mailbox mutation.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Message IDs to delete, maximum 100. | |
| permanent | No | When true, permanently deletes instead of moving to Trash. | |
| mailbox_id | No | Mailbox 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_state | No | Optional message state token for stale-write protection. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MessagesARead-onlyIdempotentInspect
Use this when the user supplies several message IDs or a prior search returns multiple candidates. It avoids repeated single-message calls.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Message IDs to fetch, maximum 100. | |
| part | No | Body part to return when body_mode is not `none`. | |
| body_mode | No | Body shape to include for each message. | |
| mailbox_id | No | Mailbox 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_html | No | When true, include HTML content when available. | |
| strip_quotes | No | When true, remove quoted reply text. | |
| include_links | No | When true, include links extracted from the body. | |
| max_body_chars | No | Maximum body characters per message before truncation. | |
| include_headers | No | Header detail to include in each message. | |
| strip_signature | No | When true, remove detected email signatures. | |
| include_attachments | No | Attachment detail to include. Contents are not returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MessagesAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Message IDs to update, maximum 100. | |
| seen | No | Set or clear the seen flag. | |
| flagged | No | Set or clear the flagged marker. | |
| keywords | No | Map 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_id | No | Mailbox 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_state | No | Optional message state token for stale-write protection. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MessagesARead-onlyIdempotentInspect
Use this to count messages matching mailbox filters without listing every result. Follow with mailbox_list_messages only when examples are needed.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Full-text search query across message fields. | |
| cc | No | Filter by CC recipient email address or display name. | |
| to | No | Filter by To recipient email address or display name. | |
| bcc | No | Filter by BCC recipient email address or display name. | |
| body | No | Filter by message body text. | |
| from | No | Filter by sender email address or display name. | |
| after | No | Filter to messages after this ISO 8601 timestamp. | |
| before | No | Filter to messages before this ISO 8601 timestamp. | |
| keyword | No | Require this message keyword, such as `$seen`. | |
| subject | No | Filter by subject text. | |
| folder_id | No | Filter to messages in this folder ID. | |
| is_unread | No | When true, only return unread messages. | |
| thread_id | No | Filter to messages in this thread ID. | |
| mailbox_id | No | Mailbox 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_name | No | Header name to match with `header_value`. | |
| not_keyword | No | Exclude messages with this keyword. | |
| header_value | No | Header value to match with `header_name`. | |
| has_attachment | No | When true, only return messages with attachments. | |
| max_size_bytes | No | Maximum message size in bytes. | |
| min_size_bytes | No | Minimum message size in bytes. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MetadataARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox_id | No | Mailbox public ID when the credential can access more than one mailbox. | |
| message_id | Yes | Message ID containing the attachment. | |
| attachment_id | Yes | Attachment ID from message metadata. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ChangesARead-onlyIdempotentInspect
Use this to resume mailbox sync from a prior state cursor. Do not use it for ad hoc message search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum change records to return (default 50, max 500). | |
| types | No | Comma-separated list: messages, folders, threads, submissions, identities, quotas. | |
| mailbox_id | No | Mailbox 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_state | No | Legacy message state cursor to resume from. | |
| quotas_since_state | No | Quota state cursor to resume from. | |
| folders_since_state | No | Folder state cursor to resume from. | |
| threads_since_state | No | Thread state cursor to resume from. | |
| messages_since_state | No | Message state cursor to resume from. | |
| identities_since_state | No | Identity state cursor to resume from. | |
| submissions_since_state | No | Submission state cursor to resume from. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 IdentityARead-onlyIdempotentInspect
Use this to read the mailbox sender identity and display name. Use it before composing replies when the sender should match the mailbox identity.
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox_id | No | Mailbox 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ProfileARead-onlyIdempotentInspect
Use this to identify the authenticated mailbox before acting on mail. It returns profile details for the mailbox key currently in use.
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox_id | No | Mailbox 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-Match | No | Weak ETag from a previous response. Returns 304 when unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MessageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox_id | No | Mailbox 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_id | Yes | Message ID. | |
| If-None-Match | No | Weak ETag from a previous response. Returns 304 when unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 SessionARead-onlyIdempotentInspect
Use this before complex mailbox work to discover supported mailbox capabilities, limits, and endpoint metadata. Do not use it for message search.
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox_id | No | Mailbox 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-Match | No | Weak ETag from a previous response. Returns 304 when unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ThreadARead-onlyIdempotentInspect
Use this to read one thread summary by thread_id. Use mailbox_list_thread_messages when the task needs the messages in the thread.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | Thread ID. | |
| mailbox_id | No | Mailbox 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-Match | No | Weak ETag from a previous response. Returns 304 when unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 BodyARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| part | No | Body part to return. | |
| mailbox_id | No | Mailbox 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_id | Yes | Message ID. | |
| If-None-Match | No | Weak ETag from a previous response. Returns 304 when unchanged. | |
| max_body_chars | No | Maximum body characters to return before truncation. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ContentBRead-onlyIdempotentInspect
Use this to read structured content for a known message_id. Prefer it when headers, participants, or body parts affect the answer.
| Name | Required | Description | Default |
|---|---|---|---|
| part | No | Body part to return. `auto` prefers text when available. | |
| mailbox_id | No | Mailbox 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_id | Yes | Message ID. | |
| include_html | No | When true, include HTML content when available. | |
| strip_quotes | No | When true, remove quoted reply text. | |
| If-None-Match | No | Weak ETag from a previous response. Returns 304 when unchanged. | |
| include_links | No | When true, include links extracted from the body. | |
| max_body_chars | No | Maximum body characters to return before truncation. | |
| include_headers | No | Header detail to include in the response. | |
| strip_signature | No | When true, remove detected email signatures. | |
| include_attachments | No | Attachment detail to include. Contents are not returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 FoldersARead-onlyIdempotentInspect
Use this to inspect mailbox folders before filing or moving messages. It is read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default 50, max 100). | |
| cursor | No | Pagination cursor — the `next_cursor` from the previous response. | |
| mailbox_id | No | Mailbox 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MailboxesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search by mailbox ID or email address. | |
| limit | No | Maximum results (default 50). | |
| cursor | No | Cursor from the previous response. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 IdentitiesARead-onlyIdempotentInspect
Use this to list sender identities available to the mailbox. Prefer mailbox_get_identity when only the default identity is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default 50, max 100). | |
| cursor | No | Pagination cursor — the `next_cursor` from the previous response. | |
| mailbox_id | No | Mailbox 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MessagesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Full-text search query across message fields. | |
| cc | No | Filter by CC recipient email address or display name. | |
| to | No | Filter by To recipient email address or display name. | |
| bcc | No | Filter by BCC recipient email address or display name. | |
| body | No | Filter by message body text. | |
| from | No | Filter by sender email address or display name. | |
| after | No | Filter to messages after this ISO 8601 timestamp. | |
| limit | No | Maximum results (default 50, max 100). | |
| before | No | Filter to messages before this ISO 8601 timestamp. | |
| cursor | No | Pagination cursor — the `next_cursor` from the previous response. | |
| keyword | No | Require this message keyword, such as `$seen`. | |
| sort_by | No | Message field to sort by. | |
| subject | No | Filter by subject text. | |
| folder_id | No | Filter to messages in this folder ID. | |
| is_unread | No | When true, only return unread messages. | |
| thread_id | No | Filter to messages in this thread ID. | |
| mailbox_id | No | Mailbox 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_name | No | Header name to match with `header_value`. | |
| not_keyword | No | Exclude messages with this keyword. | |
| header_value | No | Header value to match with `header_name`. | |
| has_attachment | No | When true, only return messages with attachments. | |
| max_size_bytes | No | Maximum message size in bytes. | |
| min_size_bytes | No | Minimum message size in bytes. | |
| sort_direction | No | Sort direction. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MessagesARead-onlyIdempotentInspect
Use this to list messages inside a known thread. Use message body tools only for messages that need full content.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Message sort direction within the thread. | |
| limit | No | Maximum results (default 50, max 100). | |
| cursor | No | Pagination cursor — the `next_cursor` from the previous response. | |
| thread_id | Yes | Thread ID. | |
| mailbox_id | No | Mailbox 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ThreadsARead-onlyIdempotentInspect
Use this to scan conversation threads without loading every message. Continue with next_cursor only when additional threads are needed.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Full-text search query across thread messages. | |
| after | No | Filter to threads updated after this ISO 8601 timestamp. | |
| limit | No | Maximum results (default 50, max 100). | |
| before | No | Filter to threads updated before this ISO 8601 timestamp. | |
| cursor | No | Pagination cursor — the `next_cursor` from the previous response. | |
| folder_id | No | Filter to threads with messages in this folder ID. | |
| is_unread | No | When true, only return threads with unread messages. | |
| mailbox_id | No | Mailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox. | |
| participant | No | Filter by participant email address or display name. | |
| has_attachment | No | When true, only return threads with attachments. | |
| sort_direction | No | Sort direction. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 AttachmentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Read mode: auto, metadata, text, or resource_link. auto inlines small text attachments. | auto |
| mailbox_id | No | Mailbox public ID when the credential can access more than one mailbox. | |
| message_id | Yes | Message ID containing the attachment. | |
| attachment_id | Yes | Attachment ID from message metadata. | |
| max_text_bytes | No | Maximum text bytes to return inline. Defaults to 262144 and is capped at 1048576. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 SnippetsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search text used to generate snippets. | |
| cc | No | Filter by CC recipient email address or display name. | |
| to | No | Filter by To recipient email address or display name. | |
| bcc | No | Filter by BCC recipient email address or display name. | |
| body | No | Filter by message body text. | |
| from | No | Filter by sender email address or display name. | |
| after | No | Filter to messages after this ISO 8601 timestamp. | |
| limit | No | Maximum results (default 50, max 100). | |
| before | No | Filter to messages before this ISO 8601 timestamp. | |
| keyword | No | Require this message keyword, such as `$seen`. | |
| subject | No | Filter by subject text. | |
| folder_id | No | Filter to messages in this folder ID. | |
| is_unread | No | When true, only return unread messages. | |
| mailbox_id | No | Mailbox 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_name | No | Header name to match with `header_value`. | |
| message_ids | No | Comma-separated message IDs, maximum 100. | |
| not_keyword | No | Exclude messages with this keyword. | |
| header_value | No | Header value to match with `header_name`. | |
| has_attachment | No | When true, only return messages with attachments. | |
| max_size_bytes | No | Maximum message size in bytes. | |
| min_size_bytes | No | Minimum message size in bytes. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | CC recipients. | |
| to | No | Primary recipients. | |
| bcc | No | BCC recipients. | |
| from | No | Sender address. Defaults to mailbox identity. | |
| subject | No | Subject line for the outgoing email. | |
| reply_to | No | Reply-To recipients. | |
| html_body | No | HTML body. | |
| text_body | No | Plain text body. | |
| mailbox_id | No | Mailbox public ID to target when the credential grants access to more than one mailbox. Omit when the credential is scoped to exactly one mailbox. | |
| attachments | No | Attachments to send with the message. | |
| custom_headers | No | Custom headers to include. | |
| Idempotency-Key | No | Client-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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 IdentityAIdempotentInspect
Use this only when the user explicitly asks to change sender identity details. Do not use it for one-off message composition.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Default sender name. Send null or an empty string to clear it. | |
| mailbox_id | No | Mailbox 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_signature | No | HTML signature appended to Mailbox API sends that include html_body. | |
| text_signature | No | Plain text signature appended to Mailbox API sends that include text_body. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Filename to use when sending the uploaded attachment. | |
| file_path | No | Local file path for stdio MCP only. The path must be inside a client-declared MCP root; hosted MCP rejects it. | |
| mailbox_id | No | Mailbox public ID when the credential can access more than one mailbox. | |
| size_bytes | No | Exact byte size required when presign_upload_url=true. | |
| content_type | No | MIME type to store with the upload, for example application/pdf. | application/octet-stream |
| content_base64 | No | Last-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_url | No | When true, return a short-lived signed PUT URL instead of reading bytes. Provide size_bytes and upload with a shell/client promptly. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MessageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Optional full-text query to match. | |
| after | No | ISO 8601 lower bound for received_at. Omit to wait for messages received after this call starts. | |
| keyword | No | Optional keyword/label that the message must have, such as $seen. | |
| subject | No | Optional subject text filter. | |
| folder_id | No | Optional folder ID filter. | |
| from_email | No | Optional sender email address or display-name filter. | |
| mailbox_id | No | Mailbox public ID when the credential can access more than one mailbox. | |
| has_attachment | No | When true, wait only for messages with attachments. | |
| timeout_seconds | No | Maximum seconds to wait. Capped at 25 seconds so MCP clients do not hold a tool call open indefinitely. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sha256 | No | Optional SHA-256 hex digest for the upload bytes. | |
| filename | Yes | Filename to associate with the uploaded attachment. | |
| size_bytes | Yes | Exact byte size that will be uploaded. | |
| content_type | No | MIME type expected for the upload. | |
| Idempotency-Key | No | Optional 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 MetadataARead-onlyIdempotentInspect
Use this to inspect a temporary Sending attachment_id before sending. It returns metadata only, not file bytes.
| Name | Required | Description | Default |
|---|---|---|---|
| attachment_id | Yes | Temporary attachment ID returned by an upload endpoint. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | CC recipients (subject to 50 total To, CC, and BCC recipients) | |
| to | Yes | Primary recipient | |
| bcc | No | BCC recipients (subject to 50 total To, CC, and BCC recipients) | |
| from | Yes | Sender address | |
| subject | Yes | Email subject line (max 998 chars, RFC 5322) | |
| reply_to | No | Reply-To address | |
| html_body | Yes | HTML email content (max 25MB) | |
| text_body | No | Plain text alternative (max 25MB) | |
| attachments | No | File attachments (max 10). Use attachment_id refs for uploaded files. | |
| return_path | No | Envelope sender for VERP support | |
| custom_headers | No | Custom X-* headers to include in the email | |
| Idempotency-Key | No | Optional 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes | Array of email messages to send (max 100) | |
| Idempotency-Key | No | Optional 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Filename to use when sending the uploaded attachment. | |
| file_path | No | Local file path for stdio MCP only. The path must be inside a client-declared MCP root; hosted MCP rejects it. | |
| content_type | No | MIME type to store with the upload, for example application/pdf. | application/octet-stream |
| content_base64 | No | Last-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_key | No | Optional Idempotency-Key for safely retrying the upload. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v1.0.1- Changed
sending_send_email4 fields changed- changed
Input schema / properties / bcc / descriptionPrevious value: -"BCC recipients (max 100)"New value: +"BCC recipients (subject to 50 total To, CC, and BCC recipients)" - changed
Input schema / properties / bcc / maxItemsPrevious value: -100New value: +49 - changed
Input schema / properties / cc / descriptionPrevious value: -"CC recipients (max 100)"New value: +"CC recipients (subject to 50 total To, CC, and BCC recipients)" - changed
Input schema / properties / cc / maxItemsPrevious value: -100New value: +49
- Changed
sending_send_email_batch4 fields changed- changed
Input schema / properties / messages / items / properties / bcc / descriptionPrevious value: -"BCC recipients (max 100)"New value: +"BCC recipients (subject to 50 total To, CC, and BCC recipients)" - changed
Input schema / properties / messages / items / properties / bcc / maxItemsPrevious value: -100New value: +49 - changed
Input schema / properties / messages / items / properties / cc / descriptionPrevious value: -"CC recipients (max 100)"New value: +"CC recipients (subject to 50 total To, CC, and BCC recipients)" - changed
Input schema / properties / messages / items / properties / cc / maxItemsPrevious value: -100New value: +49
30 tool updates
v1.0.0- First observed
mailbox_batch_delete_messages - First observed
mailbox_batch_get_messages - First observed
mailbox_batch_update_messages - First observed
mailbox_count_messages - First observed
mailbox_get_attachment - First observed
mailbox_get_changes - First observed
mailbox_get_identity - First observed
mailbox_get_me - First observed
mailbox_get_message - First observed
mailbox_get_session - First observed
mailbox_get_thread - First observed
mailbox_list_body - First observed
mailbox_list_content - First observed
mailbox_list_folders - First observed
mailbox_list_granted_mailboxes - First observed
mailbox_list_identities - First observed
mailbox_list_messages - First observed
mailbox_list_thread_messages - First observed
mailbox_list_threads - First observed
mailbox_read_attachment - First observed
mailbox_search_message_snippets - First observed
mailbox_send_message - First observed
mailbox_update_identity - First observed
mailbox_upload_attachment - First observed
mailbox_wait_for_message - First observed
sending_create_attachment_upload - First observed
sending_get_attachment - First observed
sending_send_email - First observed
sending_send_email_batch - First observed
sending_upload_attachment
TDQS
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.
All tools follow a consistent pattern of 'domain_verb_noun' (e.g., mailbox_batch_delete_messages, sending_send_email). No mixing of conventions.
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.
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
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
Hosted email for AI agents: create inboxes, send, receive, and reply over MCP with scoped API keys
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Shipmail MCP server for AI agent custom-domain email inboxes with REST API and webhooks.
Related MCP Servers
- AlicenseAqualityDmaintenanceEmail infrastructure for AI agents — create inboxes, send/receive email, search messages, and manage threads via MCP tools.10292MIT
- AlicenseAqualityCmaintenanceMCP server for LobsterMail — gives AI agents email tools. Create inboxes, send and receive email, search messages, and manage webhooks.1126MIT
- AlicenseAqualityDmaintenanceMCP server for Sendook - an AI email communication platform. Enables AI agents to send and receive emails, manage inboxes, threads, and webhooks programmatically.16MIT
- AlicenseAqualityCmaintenanceOfficial 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.291142MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sendmux/sendmux-sdk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server