Sendmux Email Inbox API + Sending
OfficialThis server lets AI agents read, search, manage, and send email through Sendmux mailboxes, plus send outbound email through the Sendmux Sending API.
Mailbox discovery and profile: validate mailbox connection, get mailbox profile/session, list granted mailboxes, get/update sender identity, and list folders.
Message retrieval and search: list, count, batch get, search snippets, fetch single messages, read message bodies or structured content, list thread messages, and wait for new messages.
Attachment handling: read attachment contents or get fresh download links, upload attachments via local file path, presigned PUT URL, or tiny inline base64, and use returned blob IDs or attachment IDs when sending.
Mailbox mutations: update message flags/keywords, batch delete messages, and send mailbox messages with attachments and custom headers.
Sync and changes: get mailbox changes using state cursors for messages, folders, threads, submissions, identities, and quotas.
Sending API: upload attachments, create attachment uploads for delegated PUTs, inspect temporary attachment metadata, send single or batch emails with up to 10 attachments, custom headers, and idempotency keys, and validate the Sending connection.
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.
2.0.0 upgrade
Version 2.0.0 removes local file_path and roots inputs from MCP attachment
tools. Before upgrading a self-managed package or server, retain the prior
known-working package environment, dependency state, and MCP client and tool
configuration. Update attachment callers to use the
attachment workflow for agents, then verify
tool discovery and each attachment workflow your agents use.
To roll back a self-managed installation, restore the retained package environment, dependency state, and MCP client and tool configuration together. Verify tool discovery and the relevant attachment workflow before resuming agents. A package rollback doesn't reverse uploads or sends that have already completed.
For clients that use Sendmux's hosted endpoint, changing a local pip
environment doesn't change the deployed server version. A hosted deployment
rollback is a separate operator release action and must be verified against the
hosted endpoint.
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 |
|
|
Retry time budget, in seconds |
| unset |
Retries honour Retry-After and X-RateLimit-Reset without applying the local backoff ceiling, and stop for retryable: false. Set the optional retry budget with RetryConfig(max_elapsed_seconds=30), the environment variable above, or --retry-max-elapsed-seconds 30. A retry that would exceed the remaining budget returns the original error; in-flight requests keep their normal HTTP timeouts.
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: tools for granted mailboxes, profile/session discovery, messages, attachments, bounded message waits, threads, folders, search, counts, and mailbox sends. Requires an
smx_mbx_*key or scopedsmx_agent_*token. Agent tokens remain limited by server-side scopes; pre-claim self-registered agent tokens do not includeemail.send.Management: tools for domains, mailboxes, logs, metrics, spend summary, and webhooks. Requires an
smx_root_*key.Sending: tools for attachment upload refs, single sends, and batch sends. Requires an
smx_mbx_*key or owner-approved Sending-resourcesmx_agent_*token.
The server rejects keys with the wrong prefix before starting.
Package Contract For Maintainers
The source checkout includes sendmux_mcp/mcp-contract.json, generated from the actual server factory's public tool discovery. Use its tools.by_surface entries and tools.count instead of maintaining a separate catalogue. Each entry retains the tool's description, input/output schemas, and annotations. The contract also separates hosted resource, local transports, API origins, certified protocol revisions, and the runtime versions used during generation.
After installing a build that contains the contract, read it without credentials or network requests:
from sendmux_mcp.contract import load_contract
contract = load_contract()
print(contract["package"])The result identifies the installed distribution and version. load_contract() raises ValueError for stale source/version evidence, a mismatched pinned FastMCP runtime, or unsupported certified revisions. The recorded transitive MCP version is provenance, not a narrower dependency constraint. Reading the artifact does not certify a newly resolved dependency version or prove a deployed service matches this build.
uploads distinguishes the locally enforced inline and Mailbox byte caps from Sending's returned max_size_bytes authority. The Sending presign request schema does not impose a numeric maximum; use the upload intent response, not a historical source constant. URL expiry and physical attachment retention are not equivalent, and this artifact does not certify storage cleanup.
From the repository root, pnpm generate:mcp refreshes native editable metadata and writes deterministic contract bytes. With that environment prepared, pnpm exec .tmp/python-venv/bin/python -m sendmux_mcp.contract --check checks freshness without rewriting. pnpm build:mcp verifies tests, wheel/sdist inclusion, installed consumption, and frozen conformance checks. Checkout changes are not available through pip install until their release is published.
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:
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 to a presigned upload, CLI--attach, or SDK file helpers.
Presigned uploads use the mailbox attachment cap, currently 7,500,000 bytes per attachment, and 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, use sending_upload_attachment only for tiny inline content, or call sending_create_attachment_upload and PUT bytes outside model context. Then pass {"attachment_id": "att_..."} in sending_send_email.attachments[].
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
32 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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description's 'Deletion is a mailbox mutation' mostly restates the structured data. It does add the useful safety context that explicit user request and ID confirmation are required, but it does not describe effects like permanence or recovery beyond what the parameter schema already offers.
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, with the most important usage constraint front-loaded. 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?
For a destructive batch operation, the description plus annotations and fully documented parameters give an agent enough to select and invoke the tool correctly. The output schema exists, so return-value details are covered elsewhere. A small extra note about default trash vs permanent behavior would be nice, but the schema already specifies 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 description coverage is 100%, and the description adds no parameter-level detail. Per the rubric baseline, the schema carries the semantic weight, so a 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 conveys that the tool deletes messages, and ties it to user-supplied or confirmed message IDs. It does not explicitly contrast with sibling batch tools, but 'deletion' is specific enough to distinguish it from batch_get or batch_update.
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 opening 'Use this only when the user explicitly asks to delete messages and supplies or confirms the message IDs' provides an explicit precondition and a clear exclusion signal. It does not name alternatives, but the 'only when' phrasing effectively constrains when the tool should be selected.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds no additional behavioral context such as response ordering, error handling, or limits beyond what the schema already states. It doesn't contradict annotations, but it also doesn't enrich them.
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 with zero fluff. It front-loads the primary usage condition and then explains the benefit. Every word earns its place, and it is highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters) and that an output schema exists, the description is adequate but minimal. It covers when to use it and the advantage over single-message calls. It does not mention response ordering or partial failure behavior, but these are not essential for tool selection given the output schema and annotations. It is complete enough for an agent to decide 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%, so all 11 parameters are already documented in the input schema. The description adds no parameter-specific meaning, only usage context. Since the schema carries the full semantic burden, a 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?
The description clearly states the tool fetches multiple messages by IDs and distinguishes it from single-message retrieval. It uses a specific verb ('get') and resource ('messages'), and explicitly contrasts with repeated single-message calls, making its purpose unambiguous among 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?
It provides explicit when-to-use scenarios ('user supplies several message IDs' or 'prior search returns multiple candidates') and notes it avoids repeated single-message calls. It doesn't name the exact sibling (mailbox_get_message) but the implication is clear. It could be more explicit about when not to use it, but 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.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the description's job is to add context beyond those. It adds a meaningful workflow constraint (invoke only post user-confirmation) and reinforces the mutating nature of the call, consistent with the annotations. No contradiction exists, and the added context is genuinely useful for an agent deciding whether to act autonomously.
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 zero filler: the operations list is front-loaded, the user-confirmation gate follows immediately, and the read-only exclusion closes it out. Every sentence carries load-bearing guidance for invocation.
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 and annotations covering idempotency and destructiveness, the description need not explain return values or safety profiles. It covers purpose, when-to-use, and exclusions adequately. The residual gap is the unsupported 'move to a folder' claim and no guidance that ids is semantically required despite the empty required array, leaving minor ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters, including rich detail on keywords (normalization to lowercase, read-only lifecycle keywords) and if_in_state (stale-write protection). The description adds only loose alignment ('set keywords/labels' maps to the keywords param) and no syntax or format details beyond the 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?
The description names a specific resource (multiple messages) and concrete operations (mark, flag, set keywords/labels), which distinguishes it from sibling update-adjacent tools like mailbox_batch_delete_messages and mailbox_batch_get_messages. However, the claimed 'move to a folder' capability has no corresponding parameter in the input schema, which slightly muddies the purpose for an agent planning its call.
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 an explicit when-to-use condition ('after the user has confirmed the desired change') and a clear when-not-to-use exclusion ('Do not use it for read-only tasks'). It stops short of naming the specific read-only siblings (e.g., mailbox_batch_get_messages, mailbox_get_message) as alternatives, which would earn a 5.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety and idempotency. The description adds the behavioral trait that it does not list results (only counts), which is useful beyond the annotations. It also hints at a workflow sequence. 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?
The description is two sentences with zero redundancy. The primary purpose is front-loaded, and the usage alternative is stated succinctly. 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 the tool has 20 optional parameters and an output schema exists (though not shown), the description sufficiently explains when to use it and what it accomplishes. It does not explain the return format, but the output schema likely covers that. The description is adequate for an agent to decide when to invoke 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?
The schema description coverage is 100%, so the baseline is 3. The description does not elaborate on any parameters; it only refers to 'mailbox filters' generically. Since the schema already documents all 20 parameters, the description adds no additional semantic value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'count messages matching mailbox filters without listing every result.' It specifies the verb (count) and resource (messages), and explicitly differentiates itself from mailbox_list_messages, which is a sibling. This makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: use this tool to count messages, and follow with mailbox_list_messages only when examples are needed. This directly addresses when to use this tool versus an alternative, leaving no ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
Beyond the readOnlyHint and idempotentHint annotations, the description adds critical behavioral detail: the download_url is short-lived and must be fetched promptly, and the tool should be called again if it expires. This is exactly the kind of actionable behavior an agent needs.
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 dense sentences with no filler. The usage context is front-loaded, followed by the critical expiry warning and remedy.
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 a full input schema, output schema, and detailed annotations, the description covers the one thing structured data cannot express: the transient nature of the returned URL and how to handle expiry. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no significant parameter-level semantics beyond implying that message_id and attachment_id identify the exact attachment.
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 a specific verb and resource: it returns metadata plus a fresh short-lived download_url for a specific message attachment. This distinguishes it from sibling tools like mailbox_read_attachment, which likely retrieve content rather than metadata and a URL.
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 context: use this after finding a message attachment. It does not explicitly name alternatives or state when not to use it, but the sequencing guidance is clear and practical.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description only needs to add context beyond that. It adds the cursor-based sync mechanism but does not describe return behavior or cursor-format expectations; output schema covers the return shape, so 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?
Two sentences with zero waste. The primary use case is front-loaded, and the exclusion follows immediately. 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?
For a tool with 10 optional parameters including 7 distinct cursor types (since_state vs. type-specific *_since_state), the description is thin. It does not explain how the legacy since_state relates to messages_since_state, folders_since_state, etc. — a genuine gap an agent could trip on. Output schema and 100% schema coverage offset this somewhat, but the multi-cursor complexity warrants more guidance.
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 10 parameters have individual descriptions in the input schema, so the baseline of 3 applies. The description adds no parameter-level detail beyond the schema, though its cursor-resume framing helps contextualize the various *_since_state parameters.
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?
States a specific purpose: resume mailbox sync from a prior state cursor. The verb 'resume' plus 'prior state cursor' makes the operation precise, and the explicit exclusion of ad hoc message search differentiates 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?
Gives clear when-to-use (resuming sync from a cursor) and an explicit when-not-to-use (ad hoc search). However, it does not name the alternative tools to use for ad hoc search, so the agent must infer which sibling handles that case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mailbox_get_connectionGet Mailbox ConnectionARead-onlyIdempotentInspect
Validate the current Mailbox credential and read its team, connection label, permissions and authorised mailboxes. No mailbox selection or mailbox storage access is required.
| Name | Required | Description | Default |
|---|---|---|---|
| If-None-Match | No | ETag from a previous response. A match returns 304 with no body after rechecking authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 meaningful behavioral context: it validates the current credential, reads specific connection-level data, and explicitly states that no mailbox selection or storage access is required. This is consistent with the annotations and goes beyond what they state.
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 with no wasted words. It front-loads the core purpose, lists the specific data returned, and adds a relevant scope constraint about mailbox selection and storage access. 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?
For a simple read-only tool with one optional parameter, an output schema, and strong annotations, the description is largely sufficient. It explains the purpose, scope, and key behavioral constraint. It does not explicitly route agents to sibling tools, but that gap is minor given the tool's simplicity and rich structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional parameter, If-None-Match, with a description covering its ETag behavior, so schema description coverage is 100%. The tool description adds no additional parameter semantics beyond the schema, so the 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?
The description states a specific action: validate the current Mailbox credential and read team, connection label, permissions, and authorised mailboxes. It clearly distinguishes itself from mailbox-content tools by noting that no mailbox selection or mailbox storage access is required, though it does not explicitly name or contrast sibling tools like mailbox_get_session.
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 its use for credential validation and connection metadata retrieval, and the 'no mailbox selection or mailbox storage access is required' line hints at when it is not appropriate. However, it provides no explicit guidance about when to prefer this tool over alternatives such as mailbox_get_session or sending_get_connection.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior. The description adds context about reading sender identity and display name before composing replies, but does not disclose additional behavioral details such as error conditions or auth requirements. 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 short sentences carry the purpose and the key usage context without any filler. The information is front-loaded and every word contributes to the agent's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter, an output schema, and strong annotations, the description is nearly complete. It could slightly improve by mentioning when to prefer mailbox_list_identities, but this is not a major gap given the clear composing-replies scenario.
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 parameter schema has 100% coverage and already explains mailbox_id clearly, including when to omit it. The description does not add parameter-specific guidance, but with such strong schema coverage, a 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?
The description clearly states the tool reads the mailbox sender identity and display name, using a specific verb and resource. It does not explicitly differentiate itself from sibling tools like mailbox_list_identities, but the singular 'mailbox identity' and the composing-replies context imply the intended use.
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 an explicit use case: use this before composing replies when the sender should match the mailbox identity. It lacks explicit exclusions or alternatives, but the context is clear enough for an agent to select this tool for the stated scenario.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered by structured data. The description adds the 'currently in use' mailbox targeting nuance, but it does not describe caching/304 behavior or edge cases; the schema's If-None-Match parameter description covers the 304 behavior instead.
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 short sentences with no filler; the main use-case is front-loaded in the first sentence and the return value in the second. 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?
For a simple read-only profile tool with no required parameters, rich annotations, 100% schema parameter coverage, and an output schema, the description is sufficient. An agent has everything needed to invoke it and interpret the basic result.
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 both params (mailbox_id and If-None-Match) are already documented in the schema. The description does not add parameter-level meaning beyond what the schema provides, which yields the baseline score 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 uses a clear verb ('identify', 'returns') and a specific resource ('authenticated mailbox' / 'mailbox key currently in use'), making the tool's function obvious. It does not explicitly distinguish itself from sibling tools like mailbox_get_identity or mailbox_get_session, so it stops short of full differentiation.
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 gives a concrete usage context: 'before acting on mail', which tells an agent when this lightweight profile lookup is appropriate. It does not state when not to use it or name alternatives, so it lacks explicit exclusion/alternative guidance.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds that it fetches a summary or detail, implying a non-body response, and the reference to body tools reinforces that. It does not detail error behavior or return format, but the output schema covers that. 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 with zero waste: the first states the core purpose and scope, the second provides the routing rule. The most important information is front-loaded, and 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 the output schema and comprehensive annotations, the description provides sufficient context for correct invocation. It explains when to use this tool versus body-content alternatives, and the schema handles parameter details. A slightly more explicit statement about the absence of body content in the response would improve it, but it is already implied.
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%, and the schema already documents all three parameters with clear descriptions. The tool description does not add any meaning beyond restating that it uses message_id. Baseline of 3 is appropriate when schema fully handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb (fetch) and resource (one message) keyed by message_id, and explicitly differentiates from sibling tools by noting that body content is not returned here. It distinguishes from mailbox_batch_get_messages by saying 'one message' and from body-fetching tools by naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not guidance: 'Use mailbox_list_body or mailbox_list_content when the body content is required.' This gives the agent a clear decision rule and names the alternatives, leaving no ambiguity about when to select this tool.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, and non-destructive behavior, so the description does not need to restate safety. The description adds some context by specifying what the session discovery is for, but it does not add rich behavioral detail such as caching behavior beyond what the schema already documents. With annotations carrying the safety profile, a 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?
Two front-loaded sentences, with the primary use case stated first and the exclusion second. No filler or redundant restatement of the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no required parameters, a complete output schema, and rich annotations, the description covers what an agent needs to select and invoke the tool correctly. Its only weakness is sibling differentiation, already accounted for in purpose and usage dimensions, so it is contextually complete for its 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 both mailbox_id and If-None-Match are already documented in the schema; the description does not need to repeat them. The description contributes no additional parameter-level meaning, leaving the baseline of 3 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 ('discover') and resource scope ('supported mailbox capabilities, limits, and endpoint metadata'), making the core purpose clear. It also disambiguates from message-search tools by saying 'do not use it for message search.' However, it does not differentiate itself from the closely named sibling mailbox_get_connection, so it falls short of full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger: 'Use this before complex mailbox work' and an explicit negative: 'Do not use it for message search.' It does not name an alternative tool for message search or for connection-level checks, so usage guidance is clear but not fully complete.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the tool returns a thread summary rather than the messages themselves, which is useful, but it does not provide richer behavioral context such as failure modes or pagination. This is consistent with the baseline for annotation-covered tools.
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 tight sentences with no filler. The primary usage is front-loaded and the alternative is stated immediately, making the description easy to scan and act on.
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 is simple, has one required parameter, a full output schema, and annotations covering safety and idempotency. The description provides the essential purpose and routing guidance without omitting anything needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented in the input schema. The description does not add additional parameter-level meaning beyond reinforcing that thread_id identifies the thread to summarize.
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 ('read') and resource ('one thread summary by thread_id'), and clearly distinguishes it from the sibling tool mailbox_list_thread_messages by focusing on the summary rather than the 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?
It explicitly states when to use this tool and names the alternative for when messages are needed: 'Use mailbox_list_thread_messages when the task needs the messages in the thread.' This removes ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds useful behavioral context about response granularity (raw/simplified body, not full MIME details), which goes beyond what annotations express.
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 filler. The verb, resource, precondition, and selection guidance are front-loaded and 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?
The schema covers all parameters, an output schema exists, and annotations cover safety guarantees. The description provides enough decision context for an agent to invoke the tool correctly, though explicit sibling routing for full-MIME or attachment needs would make it fully complete.
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 adds general context about body versus MIME details but does not explain parameter-specific behavior beyond what the schema already 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 states a specific verb ('read'), a specific resource ('body'), and a precise scope ('for a known message_id'). It also distinguishes the tool from generic message retrieval by clarifying that it returns raw or simplified body content and omits full 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 gives an explicit preference condition: use it when the task needs message text but not every MIME detail. This gives an agent useful selection context, though it does not name specific alternative tools or explicitly say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mailbox_list_contentRead Message ContentARead-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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds that the content is structured and relevant to headers/participants/body parts, but it does not disclose additional behavioral traits such as response truncation, ETag behavior, or mailbox scoping beyond what the schema already lists.
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 the operation and target resource, followed by a concise selection criterion. There is no filler or repetition of schema content.
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 output schema and full parameter descriptions, the tool does not need to restate return values or parameter details. The description provides the key usage discriminator, though for an 11-parameter tool it relies heavily on structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a general semantic cue that headers/participants/body parts matter, but it does not clarify interactions among the many parameters; the schema carries the semantic weight.
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 ('read') and resource ('structured content') and constrains the operation to 'a known message_id'. The second sentence, 'Prefer it when headers, participants, or body parts affect the answer,' clearly distinguishes this from sibling search/list operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Prefer it when headers, participants, or body parts affect the answer' gives an explicit, actionable condition for when to use this tool. It does not name alternative tools or provide when-not-to-use exclusions, so it stops short of a full 5.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint, idempotentHint, and destructiveHint=false; the description merely restates 'read-only' and adds no new behavioral traits like pagination or auth. 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 short sentences, front-loaded with purpose and no filler. 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?
With full schema coverage, an output schema present, and annotations covering read-only and idempotent behavior, the description's purpose and use-case complete the picture.
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%, and the description relies on the schema for parameter details. It adds no extra semantics, which meets 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 identifies a specific verb ('inspect') and resource ('mailbox folders'), plus a clear use case. It doesn't explicitly differentiate from sibling tools, but 'folders' is distinct among the sibling list.
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?
States a concrete trigger: before filing or moving messages. It doesn't mention alternatives or when not to use, so it doesn't reach a 5.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful behavioral context: it searches only the granted mailbox set and returns IDs intended for mailbox_id, which goes beyond the annotations without contradicting them.
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 short sentences front-load the usage condition ('Use this first') before stating scope and output. Every sentence earns its place with 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?
For a simple read-only list/search tool with fully documented optional parameters and an output schema, the description covers why to use it, when to use it, its scope, and how its result is consumed downstream. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for q, limit, and cursor, with 100% coverage. The description adds no parameter-level semantics beyond that, so the schema carries the load and the 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?
The description states a specific verb ('searches') and resource ('mailboxes granted to this connection'), and clarifies the output: IDs to pass as mailbox_id. 'Use this first' positions it as the discovery tool among sibling mailbox operations, making its purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool first when the token can access more than one mailbox, giving a clear trigger condition. It does not name alternatives or state when not to use it, so it stops short of full exclusion guidance.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description does not add additional behavioral context (e.g., pagination details or rate limits), but with the output schema present and the annotations strong, a baseline 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?
Two sentences with no fluff. The primary purpose is in the first sentence, and the sibling distinction is delivered concisely in the second. 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 the output schema is present (so return format is documented), the annotations cover safety, and the parameters are fully explained in the schema, the description covers all essential decision points. It could add a note on pagination behavior, but the cursor parameter implies it, making this a minor gap. Overall, it's complete for an agent to call 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 description coverage is 100%, meaning all three parameters (limit, cursor, mailbox_id) already have clear documentation in the schema. The tool description does not add any extra nuance beyond what the schema provides, so it meets the baseline of 3 without adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('list') and specific resource ('sender identities available to the mailbox'), and it explicitly differentiates from the sibling mailbox_get_identity by naming the condition under which that alternative is preferred. This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (to list all identities) and when to prefer the alternative 'mailbox_get_identity' when only the default identity is needed. This provides direct routing guidance without requiring inference.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds behavioral details beyond annotations: it deliberately avoids fetching full bodies and notes that attachment metadata includes a short-lived download_url, which is useful for planning follow-up calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no filler. The core purpose is front-loaded, and the filter list is compact yet comprehensive at a high level. Every phrase 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?
For a tool with 24 optional parameters and an existing output schema, the description covers the central behavior, the no-body-fetching distinction, and the download URL caveat. It omits some filter families like sorting, threading, and header filtering, but those are fully documented in the schema, so the description is sufficient as an orientation.
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 each parameter. The description provides a useful category summary (folder, keyword, dates, sender/recipient, text, unread, attachment) but does not add new per-parameter meaning beyond what the schema already states.
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 states a specific verb ('scan') and resource ('mailbox messages') and adds a distinguishing detail ('without fetching full bodies') that separates it from siblings like mailbox_get_message and mailbox_batch_get_messages. It also names the key filtering dimensions, making the tool's purpose unmistakable.
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 opens with 'Use this to scan mailbox messages by cursor without fetching full bodies,' giving clear context for when this tool is appropriate. However, it does not explicitly name alternatives or state when not to use it, leaving some routing to the agent's inference.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only the known-thread scoping and the body-tool boundary, with no additional behavioral detail such as snippet-only results or pagination behavior. This is adequate but not enriched.
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 short, direct sentences with no filler. The primary usage instruction comes first, followed by the one relevant alternative-tool caution. 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?
With an output schema present and full parameter documentation in the schema, the description does not need to explain return shapes or parameter formats. It provides enough context for the core decision: list messages in a known thread, and defer full-content retrieval to body tools. A brief note on result format or when mailbox_id matters would elevate it further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema. The description adds no further parameter-level meaning beyond restating that the operation is scoped to a known thread, which keeps it at 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?
The description states a specific action and resource: 'list messages inside a known thread.' It is clear and distinct from the message-body siblings, but it does not explicitly differentiate itself from nearby list tools like mailbox_list_messages or mailbox_list_threads.
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 a concrete usage condition: use this when the thread is already known. It also draws a clear boundary against body-content tools by saying they should only be used when full content is needed, which helps route the agent correctly.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, so the description's job is to add nuance. It adds that this is a lightweight scan that avoids loading every message and that next_cursor should only be followed when more threads are needed. 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, no filler, and the core purpose is front-loaded before the pagination note. Every sentence carries weight.
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 full schema coverage and an output schema, the description covers the essential purpose and pagination behavior. It could be stronger by naming the sibling tools for thread detail/message listing, but nothing needed to invoke correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents all 11 parameters. The description adds no new parameter-level detail beyond reinforcing cursor pagination, so the 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?
States a clear verb-resource pair: scan conversation threads. 'Without loading every message' differentiates it from message-body tools like mailbox_get_message and mailbox_list_thread_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?
Gives a clear usage context (thread-level scanning) and pagination guidance ('Continue with next_cursor only when additional threads are needed'). It does not explicitly name sibling alternatives or state when not to use it, so it stops short of a 5.
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 declare readOnlyHint, idempotentHint, and destructiveHint, so the description only needs to supplement them. It does by explaining that text-like attachments are returned as text and binary/oversized attachments return metadata plus a fresh download link. This adds useful behavioral context without contradicting 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 three sentences with no filler. It front-loads the core use case, then explains the server-side behavior and the unnecessary web_fetch alternative. Every sentence contributes useful 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 output schema exists and annotations cover the safety profile, the description is largely sufficient. It covers when to use the tool, the text vs binary return behavior, and the web_fetch alternative. A minor gap is not explicitly contrasting it with mailbox_get_attachment, but this does not prevent correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are fully documented in the input schema. The description adds context about text vs binary/oversized behavior that relates to mode and max_text_bytes, but it does not add per-parameter meaning beyond what the schema already 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 tool reads attachment contents after finding an attachment, and explains the text vs binary/oversized return behavior. It also distinguishes the tool from a generic web_fetch by noting text-like attachments are downloaded server-side and returned as text.
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 gives explicit when-to-use context: 'Use this after finding a message attachment when you need the attachment contents.' It also tells agents they do not need a separate web_fetch tool. It does not explicitly differentiate from the sibling mailbox_get_attachment, but the content-focused purpose is clear enough for most selection decisions.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds a distinct behavioral disclosure beyond those annotations: snippets may not be sufficient for content-specific claims, so agents must read the underlying messages first. This is valuable context that the schema and annotations do not 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 sentences with no wasted words. The main purpose is front-loaded, filters are compactly grouped, and the critical read-before-claim caveat is placed at the end. It avoids repeating schema details and is easy for an agent 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 21-parameter tool, the description is sufficient because the schema documents every parameter and the output schema covers the return shape. The annotations fully cover the safety profile, and the description adds the one operational caveat an agent needs: read full messages before making content-specific claims. Nothing critical is missing.
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?
All 21 parameters already have description coverage in the input schema, so the description does not need to explain individual fields. It adds a useful thematic grouping of filters, but no additional syntax or semantic meaning beyond what the schema provides. 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 opens with a specific action and resource: 'search message snippets by query text.' This clearly identifies the tool as a snippet search rather than a full-message retrieval or listing tool, and the closing instruction to read full messages reinforces that it returns snippets/IDs. It is unambiguous and differentiates from siblings like mailbox_get_message and mailbox_list_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 states the primary use case and enumerates the main narrowing dimensions: folder, keyword, dates, sender/recipient, unread state, and attachments. It also gives a clear operational caution: use returned message IDs with a read tool before making content-specific claims. However, it does not explicitly name the read tool or state when not to use this tool versus a sibling, so the guidance is strong but not fully explicit.
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 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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a mutating operation (readOnlyHint=false), so the bar is lower. The description adds useful context beyond the annotations: the dependency on a prior upload call, and the retry-with-key recommendation. It does not disclose the 24h idempotency cache or 409 conflict behavior, but those already live in the schema, so no additional credit is needed.
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 tight sentences with zero filler. The primary purpose is front-loaded, followed by the two most important operational directives (attachment workflow and idempotency). 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?
For a 12-parameter tool with nested objects, the schema and annotations carry most of the load, and the description supplies the key workflow sequencing. The notable gap is sibling disambiguation: with sending_send_email and sending_send_email_batch in the same toolset, an agent gets no guidance on which sending path to choose. The openWorldHint=true signal also goes unaddressed in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 12 parameters, and the baseline is 3. The description reinforces the attachment flow (upload first, pass blob_id) and the Idempotency-Key usage, but adds little meaning beyond what the parameter descriptions already state.
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 a specific verb and resource: 'send a message from the authenticated mailbox.' It is unambiguous about the core operation. However, it does not differentiate itself from the sibling tools sending_send_email and sending_send_email_batch, which also send email, leaving the agent to guess which one to pick.
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 concrete usage context: it prescribes a specific pre-requisite workflow for attachments ('call mailbox_upload_attachment first... then pass the returned blob_id') and instructs the agent to 'Include an Idempotency-Key for retries.' It does not, however, state when not to use this tool or mention the sending_send_email alternatives.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safe mutation profile is known. The description adds a usage boundary (not for one-off composition) but does not disclose additional behavioral details such as persistence, overwrite semantics, or whether omitted fields are preserved. There is 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?
The description is two sentences with no filler. The critical usage condition is front-loaded, and the exclusion is stated immediately afterward. 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?
For an update tool with zero required parameterslint, the schema covers all fields, the output schema exists, and annotations cover idempotency/destructiveness. The description covers when to use it and what not to use it for. The only noticeable gap is explicit partial-update semantics — whether omitted fields are preserved — which is a minor omission given the schema and annotations.
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%, and each parameter already has meaningful descriptions, including null-clearing semantics for name and signature fields and mailbox_id scoping guidance. The description does not add parameter-level meaning beyond labeling the operation as changing sender identity details, so the 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?
The description states the action with a specific verb and resource: 'change sender identity details.' It also explicitly distinguishes this from 'one-off message composition,' separating it from sending-related siblings. The title reinforces the target resource, so an agent can identify what this tool changes.
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 an explicit trigger condition: 'only when the user explicitly asks to change sender identity details.' It also provides a clear exclusion: 'Do not use it for one-off message composition,' which prevents confusing this with sending tools. This is direct, actionable usage guidance.
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. For real files 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. | |
| 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 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?
The description adds meaningful behavioral detail beyond the annotations: the returned URL is short-lived and must be used promptly, the upload returns a blob_id to send later, and inline base64 is capped at 32 KiB decoded. Annotations already indicate this is not read-only, and the description expands on the operational workflow without contradicting them.
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 three sentences with no filler. The primary use case is front-loaded, and each sentence adds a necessary point: when to use it, how to handle real files, and when to use the fallback path.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, full schema descriptions, output schema, and annotations, the description covers the complete workflow: choosing the presigned path, supplying required fields, uploading promptly, and reusing the blob_id when sending. Nothing essential for correctly invoking the tool is missing.
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?
Because schema description coverage is 100%, the baseline is 3, but the description adds important usage semantics: which parameters belong to the presigned path, what 'promptly' means for the short-lived URL, and that inline content is capped at 32 KiB decoded. This goes beyond simply restating 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 states a specific verb and resource: uploading an attachment before sending a mailbox message, with distinct handling for presigned real-file uploads versus inline base64. It is clearly about upload, not retrieval, but it does not explicitly differentiate itself from the sibling tool sending_upload_attachment, so it stops short of full sibling differentiation.
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 clear usage context: use before sending a mailbox attachment, use presign_upload_url=true for real files, and use content_base64 only as a last resort for tiny agent-authored files. It explains the two modes well but does not explicitly contrast this tool with alternative siblings such as sending_upload_attachment.
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?
Adds meaningful behavioral detail beyond the annotations: it polls up to 25 seconds, returns a matching message with attachment metadata when found, and returns a clean no_message result so the agent can call again. This clarifies retry semantics and the non-terminal nature of the operation.
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 and usage guidance are front-loaded, and the retry behavior is stated efficiently.
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 full parameter descriptions, annotations indicating a read-only/idempotent operation, and an output schema available, the description covers everything an agent needs: when to use it, how long it waits, and what result to expect.
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% and every parameter has a description, so the schema carries the documentation burden. The tool description adds no parameter-specific meaning beyond restating the timeout behavior, matching the baseline for fully covered schemas.
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?
States a specific verb and resource: wait for new mail rather than manually polling. It clearly describes the polling window, the matching-message result, and the no_message fallback, which makes its role distinct from sibling read tools like mailbox_get_message or mailbox_list_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?
Gives explicit usage context: use this to wait briefly for new mail instead of manual polling. It does not name sibling alternatives or state when not to use it, but the intended scenario is clear.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavior beyond the annotations: the URL is short-lived, the bytes must be PUT outside model context using returned headers, and the returned attachment_id feeds into sending_send_email. This explains the stateful two-step flow that annotations (readOnlyHint=false, openWorldHint=true) do not convey. It adds meaningful operational context without contradicting any annotation.
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 zero waste: the first front-loads the purpose and trigger condition, the second lays out the parameter requirements and the follow-on workflow. Every phrase earns its place; the structure mirrors the order of operations the agent must execute.
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 tool with an output schema and five document parameters, the description covers the full call cycle: what to provide, what happens after invocation (PUT with returned headers), and what to do with the result (pass attachment_id to sending_send_email). It doesn't mention upload size limits or expiry duration, but the output schema covers return values and the essential workflow is fully specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces which parameters matter ('Provide filename, content_type, and exact size_bytes') and stresses that size_bytes must be exact, which slightly amplifies the schema's 'Exact byte size that will be uploaded'. It doesn't add meaningfully beyond what the schema already states for each parameter.
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 states a specific verb and resource: it creates a 'short-lived upload URL' for an 'outbound Sending API attachment'. This distinguishes it from its sibling sending_upload_attachment, which is a different upload mechanism. The workflow (PUT bytes, pass attachment_id to sending_send_email) makes the tool's role unmistakable.
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 opens with an explicit when-to-use condition: 'when a remote or shell-capable agent needs a short-lived upload URL'. It also describes the intended flow (upload outside model context, then pass attachment_id onward), which signals the context where this tool belongs. It doesn't explicitly name an alternative or state when not to use it, even though sending_upload_attachment exists as a likely alternative.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: it returns metadata only, not file bytes, and operates on a temporary attachment, which helps set agent expectations.
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 filler. It front-loads the usage directive and immediately states the return behavior, making the tool's core purpose and limitation immediately visible.
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 one-parameter tool with an output schema and full annotation coverage, the description provides all necessary context: what it does, when to use it, and what it returns. Nothing an agent needs to call it correctly is missing.
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 fully describes attachment_id as a temporary upload ID. The description reinforces 'temporary' and 'Sending' context, but adds little semantic value beyond what the schema provides, staying at the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('inspect a temporary Sending attachment_id'), the resource, and the timing ('before sending'). It also explicitly distinguishes the output as 'metadata only, not file bytes', differentiating it from attachment-reading tools.
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 phrase 'before sending' provides clear contextual timing for when this tool is appropriate, implying use after upload and before send. It does not explicitly name sibling alternatives or exclusions, but the context is unambiguous enough for simple tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sending_get_connectionGet Sending ConnectionARead-onlyIdempotentInspect
Validate the current Sending credential and read its team, connection label and permissions. Requires email.send. This does not send email or check credits or provider readiness.
| Name | Required | Description | Default |
|---|---|---|---|
| If-None-Match | No | Weak ETag from a previous response. When it matches the current resource, the server returns 304 Not Modified with no body. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the authorization requirement (email.send) and the boundary exclusions (does not send email or check credits/provider readiness), which are valuable behavioral details not captured in annotations. 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?
The description is two sentences: the first states the primary action and output, the second adds the permission requirement and explicitly lists what the tool does not do. Every sentence carries meaning, and the most important information is front-loaded. No redundancy or fluff.
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 (one optional parameter, no required params) and the presence of an output schema (which would describe the returned team, connection label, and permissions), the description is sufficiently complete. It covers purpose, permission, and exclusions. The only minor gap is not describing the behavior when the credential is invalid, but that is likely covered by the 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 coverage is 100% because the only parameter, If-None-Match, has a description explaining its purpose (weak ETag, 304 response). The tool description adds no additional parameter details, but since the schema already fully documents it, the baseline of 3 is appropriate. The description could have noted how the ETag affects the response, but it is not required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates the Sending credential and reads its team, connection label, and permissions. It uses specific verbs (validate, read) and names the resource. It also explicitly distinguishes itself by noting it does not send email or check credits/provider readiness, which separates it from sibling sending tools.
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 states the prerequisite of email.send permission and clarifies what the tool does not do (send email, check credits, provider readiness), implicitly guiding the agent away from using it for those purposes. However, it does not explicitly name alternative tools like sending_send_email or mailbox_get_connection, leaving some inference required.
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 | |
| delivery_group | No | One delivery group public ID or a non-empty array of up to 50 IDs | |
| 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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and idempotentHint=false, so the write/non-idempotent nature is covered. The description adds useful context: attachments must be uploaded first, inline base64 is only for tiny content, and an Idempotency-Key prevents duplicate sends on retry. 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?
Three tight sentences: purpose first, attachment routing second, idempotency guidance third. Every sentence earns its place and there is no filler or repetition of schema content.
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 13-parameter tool with nested objects and an output schema, the description covers the core flow and the two riskiest operational areas: attachments and duplicate sends. The only notable gap is that batch-vs-single-send selection is implied by the word 'one' rather than stated explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by prescribing the attachment_id workflow and adding the 'inline base64 is only for tiny generated content' constraint, which is not encoded 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 states a specific verb and resource: 'send one outbound email through the sending API.' The word 'one' helps distinguish it from the sibling sending_send_email_batch, and the phrase 'through the sending API' separates it from mailbox-related send tools.
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 routes attachment workflows to sending_upload_attachment and sending_create_attachment_upload, and it gives a clear condition for when inline base64 is acceptable. It does not explicitly tell the agent when to prefer sending_send_email_batch over this single-send tool, so that sibling distinction is left to inference.
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, openWorldHint=true), the description adds a safety gate requiring user confirmation of every recipient and message. It also advises against inline base64 attachments except for tiny generated content, which is useful behavioral context. It doesn't disclose partial-send or failure behavior, but the description meaningfully supplements the minimal 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 with no redundancy: the primary purpose is front-loaded, followed by a concise attachment tip and a safety condition. Every sentence contributes actionable information, and the structure is optimal for quick agent comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a messages array with many subfields), the description combined with 100% schema coverage and an output schema is largely complete. It lacks an explicit comparison to the single-send sibling and doesn't mention batch size limits, but these are recoverable from the schema (max 100) and the tool name. The main gap is the absence of an explicit alternative, so 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?
Schema coverage is 100%, so the baseline is 3. The description adds specific parameter guidance by preferring uploaded attachment_id refs and discouraging inline base64 except for tiny generated content. This directly informs how to populate the attachments parameter, which is beyond the schema's generic 'Use attachment_id refs for uploaded files' note.
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 states a specific action: 'send multiple outbound emails in one request.' This clearly distinguishes the tool from the sibling sending_send_email by emphasizing 'multiple' and 'in one request.' The resource (emails) and operation (sending) are 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 gives a clear prerequisite: 'Use it only when the user confirms every recipient and message.' It also implies this tool is for batch sending rather than single sends, though it doesn't explicitly name sending_send_email as the alternative. The attachment guidance offers practical context for when to use this tool.
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. For real files 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. | |
| 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 a presigned upload for real 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 already signal mutation and non-idempotency. The description adds meaningful constraints: the 32 KiB decoded cap, the 'last resort' status of inline base64, and the directive to keep real files outside model context. It does not fully explain what happens when content_base64 is null or what resource is created, but the output schema may cover return details.
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 with no filler; the critical usage constraint is front-loaded and the alternative is named explicitly. The first sentence could be more action-oriented, but the structure is efficient and every sentence contributes.
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 output schema likely covers return values, so the description needn't detail them. However, the relationship between this tool and sending_create_attachment_upload is only partially specified: it is unclear whether calling this tool alone with content_base64 null produces a usable attachment or whether an additional staging step is required. For a 4-parameter tool, this is adequate but leaves a workflow gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description mainly restates what content_base64's schema description already says (32 KiB cap, last resort, presigned upload for real files), and it adds no new meaning for filename, content_type, or idempotency_key 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 positions the tool as a pre-send step for Sending API attachments and distinguishes it from sending_create_attachment_upload, but it never directly states the operation's core effect (e.g., 'uploads/registers an attachment'). The title and name compensate partially, so this is clear but not maximally explicit.
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 when-to-use guidance: use before sending a Sending API attachment. It also tells the agent to use sending_create_attachment_upload and PUT the file outside model context for real files, and restricts inline content_base64 to a last resort for tiny agent-authored files. This is strong routing among siblings.
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.
8 tool updates
v1.0.14- Changed
mailbox_batch_get_messages1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "messages": { - "items": { - "additionalProperties": false, - "properties": { - "content": { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata only. Attachment contents are not parsed by this endpoint.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "body": { - "additionalProperties": false, - "properties": { - "extracted_links": { - "items": { - "type": "string" - }, - "type": "array" - }, - "format": { - "enum": [ - "text", - "html" - ], - "type": [ - "string", - "null" - ] - }, - "html": { - "description": "HTML body when requested. Returned as a JSON string and not as rendered content.", - "type": [ - "string", - "null" - ] - }, - "is_truncated": { - "type": "boolean" - }, - "quotes_stripped": { - "type": "boolean" - }, - "signature_stripped": { - "type": "boolean" - }, - "text": { - "type": [ - "string", - "null" - ] - }, - "truncated_at_chars": { - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "format", - "text", - "html", - "is_truncated", - "truncated_at_chars", - "signature_stripped", - "quotes_stripped", - "extracted_links" - ], - "type": "object" - }, - "dates": { - "additionalProperties": false, - "properties": { - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "received_at", - "sent_at" - ], - "type": "object" - }, - "headers": { - "additionalProperties": false, - "properties": { - "full": { - "items": { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "mode": { - "enum": [ - "none", - "selected", - "full" - ], - "type": "string" - }, - "selected": { - "properties": { - "in_reply_to": { - "type": [ - "string", - "null" - ] - }, - "message_id": { - "items": { - "type": "string" - }, - "type": "array" - }, - "references": { - "items": { - "type": "string" - }, - "type": "array" - }, - "reply_to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "message_id", - "in_reply_to", - "references", - "reply_to" - ], - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "mode", - "selected", - "full" - ], - "type": "object" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "participants": { - "additionalProperties": false, - "properties": { - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "reply_to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "from", - "to", - "cc", - "bcc", - "reply_to" - ], - "type": "object" - }, - "states": { - "additionalProperties": false, - "properties": { - "email_state": { - "type": [ - "string", - "null" - ] - }, - "option_hash": { - "type": "string" - } - }, - "required": [ - "email_state", - "option_hash" - ], - "type": "object" - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "thread_id", - "subject", - "participants", - "dates", - "body", - "headers", - "attachments", - "states" - ], - "type": [ - "object", - "null" - ] - }, - "message": { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "flags": { - "additionalProperties": false, - "properties": { - "answered": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "flagged": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - } - }, - "required": [ - "seen", - "flagged", - "draft", - "answered" - ], - "type": "object" - }, - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "keywords": { - "description": "Active message keywords, including system flags and custom labels.", - "example": [ - "$seen", - "$flagged", - "agent_triaged" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "preview": { - "type": [ - "string", - "null" - ] - }, - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - }, - "size_bytes": { - "type": [ - "integer", - "null" - ] - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "thread_id", - "folder_ids", - "subject", - "preview", - "from", - "to", - "cc", - "bcc", - "received_at", - "sent_at", - "size_bytes", - "has_attachments", - "keywords", - "flags" - ], - "type": "object" - }, - "raw_body": { - "additionalProperties": false, - "properties": { - "body": { - "additionalProperties": false, - "properties": { - "html": { - "type": [ - "string", - "null" - ] - }, - "is_truncated": { - "type": "boolean" - }, - "text": { - "type": [ - "string", - "null" - ] - }, - "truncated_at_chars": { - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "text", - "html", - "is_truncated", - "truncated_at_chars" - ], - "type": "object" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "part": { - "enum": [ - "text", - "html", - "both" - ], - "type": "string" - }, - "states": { - "additionalProperties": false, - "properties": { - "email_state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email_state" - ], - "type": "object" - }, - "thread_id": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "thread_id", - "part", - "body", - "states" - ], - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "message", - "raw_body", - "content" - ], - "type": "object" - }, - "type": "array" - }, - "not_found": { - "items": { - "type": "string" - }, - "type": "array" - }, - "states": { - "additionalProperties": false, - "properties": { - "email_state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email_state" - ], - "type": "object" - } - }, - "required": [ - "messages", - "not_found", - "states" - ], - "type": "object" - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "messages": { + "items": { + "additionalProperties": false, + "properties": { + "content": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata only. Attachment contents are not parsed by this endpoint.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "body": { + "additionalProperties": false, + "properties": { + "extracted_links": { + "items": { + "type": "string" + }, + "type": "array" + }, + "format": { + "enum": [ + "text", + "html" + ], + "type": [ + "string", + "null" + ] + }, + "html": { + "description": "HTML body when requested. Returned as a JSON string and not as rendered content.", + "type": [ + "string", + "null" + ] + }, + "is_truncated": { + "type": "boolean" + }, + "quotes_stripped": { + "type": "boolean" + }, + "signature_stripped": { + "type": "boolean" + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "truncated_at_chars": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "format", + "text", + "html", + "is_truncated", + "truncated_at_chars", + "signature_stripped", + "quotes_stripped", + "extracted_links" + ], + "type": "object" + }, + "dates": { + "additionalProperties": false, + "properties": { + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "received_at", + "sent_at" + ], + "type": "object" + }, + "headers": { + "additionalProperties": false, + "properties": { + "full": { + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "mode": { + "enum": [ + "none", + "selected", + "full" + ], + "type": "string" + }, + "selected": { + "properties": { + "in_reply_to": { + "type": [ + "string", + "null" + ] + }, + "message_id": { + "items": { + "type": "string" + }, + "type": "array" + }, + "references": { + "items": { + "type": "string" + }, + "type": "array" + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "message_id", + "in_reply_to", + "references", + "reply_to" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "mode", + "selected", + "full" + ], + "type": "object" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "participants": { + "additionalProperties": false, + "properties": { + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "from": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "from", + "to", + "cc", + "bcc", + "reply_to" + ], + "type": "object" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "option_hash": { + "type": "string" + } + }, + "required": [ + "email_state", + "option_hash" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "thread_id", + "subject", + "participants", + "dates", + "body", + "headers", + "attachments", + "states" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "message": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + "raw_body": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "body": { + "additionalProperties": false, + "properties": { + "html": { + "type": [ + "string", + "null" + ] + }, + "is_truncated": { + "type": "boolean" + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "truncated_at_chars": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "text", + "html", + "is_truncated", + "truncated_at_chars" + ], + "type": "object" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "part": { + "enum": [ + "text", + "html", + "both" + ], + "type": "string" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email_state" + ], + "type": "object" + }, + "thread_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "thread_id", + "part", + "body", + "states" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "message", + "raw_body", + "content" + ], + "type": "object" + }, + "type": "array" + }, + "not_found": { + "items": { + "type": "string" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email_state" + ], + "type": "object" + } + }, + "required": [ + "messages", + "not_found", + "states" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } +]
- Changed
mailbox_get_message1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "flags": { - "additionalProperties": false, - "properties": { - "answered": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "flagged": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - } - }, - "required": [ - "seen", - "flagged", - "draft", - "answered" - ], - "type": "object" - }, - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "has_attachments": { - "type": "boolean" - }, - "html_body": { - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "keywords": { - "description": "Active message keywords, including system flags and custom labels.", - "example": [ - "$seen", - "$flagged", - "agent_triaged" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "preview": { - "type": [ - "string", - "null" - ] - }, - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - }, - "size_bytes": { - "type": [ - "integer", - "null" - ] - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "text_body": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "thread_id", - "folder_ids", - "subject", - "preview", - "from", - "to", - "cc", - "bcc", - "received_at", - "sent_at", - "size_bytes", - "has_attachments", - "keywords", - "flags", - "text_body", - "html_body" - ], - "type": "object" - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "html_body": { + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "in_reply_to": { + "description": "`In-Reply-To` header values, with the surrounding angle brackets removed — the message this one replies to. Empty when the message is not a reply.", + "example": [ + "20260918.0009@example.com" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "message_id": { + "description": "`Message-ID` header values for this message, with the surrounding angle brackets removed. Empty when the message carries no `Message-ID`.", + "example": [ + "20260919.0001@example.com" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "references": { + "description": "`References` header values, with the surrounding angle brackets removed — the ancestor chain of this message, oldest first. Empty when the message starts a conversation.", + "example": [ + "20260917.0001@example.com", + "20260918.0009@example.com" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "reply_to": { + "description": "`Reply-To` addresses. Address replies here rather than to `from` whenever this is non-empty. Empty when the message carries no `Reply-To`.", + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "text_body": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags", + "text_body", + "html_body", + "message_id", + "in_reply_to", + "references", + "reply_to" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } +]
- Changed
mailbox_get_thread1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "additionalProperties": false, - "properties": { - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Thread ID", - "type": "string" - }, - "last_message": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "flags": { - "additionalProperties": false, - "properties": { - "answered": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "flagged": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - } - }, - "required": [ - "seen", - "flagged", - "draft", - "answered" - ], - "type": "object" - }, - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "keywords": { - "description": "Active message keywords, including system flags and custom labels.", - "example": [ - "$seen", - "$flagged", - "agent_triaged" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "preview": { - "type": [ - "string", - "null" - ] - }, - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - }, - "size_bytes": { - "type": [ - "integer", - "null" - ] - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "thread_id", - "folder_ids", - "subject", - "preview", - "from", - "to", - "cc", - "bcc", - "received_at", - "sent_at", - "size_bytes", - "has_attachments", - "keywords", - "flags" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "message_count": { - "type": "integer" - }, - "message_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "participants": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "states": { - "additionalProperties": false, - "properties": { - "email_state": { - "type": [ - "string", - "null" - ] - }, - "thread_state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "thread_state", - "email_state" - ], - "type": "object" - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "unread_count": { - "type": "integer" - } - }, - "required": [ - "id", - "subject", - "message_count", - "unread_count", - "has_attachments", - "folder_ids", - "participants", - "last_message", - "states", - "message_ids" - ], - "type": "object" - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Thread ID", + "type": "string" + }, + "last_message": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "message_count": { + "type": "integer" + }, + "message_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "participants": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "thread_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "thread_state", + "email_state" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "unread_count": { + "type": "integer" + } + }, + "required": [ + "id", + "subject", + "message_count", + "unread_count", + "has_attachments", + "folder_ids", + "participants", + "last_message", + "states", + "message_ids" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } +]
- Changed
mailbox_list_body1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "body": { - "additionalProperties": false, - "properties": { - "html": { - "type": [ - "string", - "null" - ] - }, - "is_truncated": { - "type": "boolean" - }, - "text": { - "type": [ - "string", - "null" - ] - }, - "truncated_at_chars": { - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "text", - "html", - "is_truncated", - "truncated_at_chars" - ], - "type": "object" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "part": { - "enum": [ - "text", - "html", - "both" - ], - "type": "string" - }, - "states": { - "additionalProperties": false, - "properties": { - "email_state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email_state" - ], - "type": "object" - }, - "thread_id": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "thread_id", - "part", - "body", - "states" - ], - "type": [ - "object", - "null" - ] - }, - { - "type": "object" - } - ] - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "body": { + "additionalProperties": false, + "properties": { + "html": { + "type": [ + "string", + "null" + ] + }, + "is_truncated": { + "type": "boolean" + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "truncated_at_chars": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "text", + "html", + "is_truncated", + "truncated_at_chars" + ], + "type": "object" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "part": { + "enum": [ + "text", + "html", + "both" + ], + "type": "string" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email_state" + ], + "type": "object" + }, + "thread_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "thread_id", + "part", + "body", + "states" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } +]
- Changed
mailbox_list_content1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata only. Attachment contents are not parsed by this endpoint.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "body": { - "additionalProperties": false, - "properties": { - "extracted_links": { - "items": { - "type": "string" - }, - "type": "array" - }, - "format": { - "enum": [ - "text", - "html" - ], - "type": [ - "string", - "null" - ] - }, - "html": { - "description": "HTML body when requested. Returned as a JSON string and not as rendered content.", - "type": [ - "string", - "null" - ] - }, - "is_truncated": { - "type": "boolean" - }, - "quotes_stripped": { - "type": "boolean" - }, - "signature_stripped": { - "type": "boolean" - }, - "text": { - "type": [ - "string", - "null" - ] - }, - "truncated_at_chars": { - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "format", - "text", - "html", - "is_truncated", - "truncated_at_chars", - "signature_stripped", - "quotes_stripped", - "extracted_links" - ], - "type": "object" - }, - "dates": { - "additionalProperties": false, - "properties": { - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "received_at", - "sent_at" - ], - "type": "object" - }, - "headers": { - "additionalProperties": false, - "properties": { - "full": { - "items": { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": [ - "array", - "null" - ] - }, - "mode": { - "enum": [ - "none", - "selected", - "full" - ], - "type": "string" - }, - "selected": { - "properties": { - "in_reply_to": { - "type": [ - "string", - "null" - ] - }, - "message_id": { - "items": { - "type": "string" - }, - "type": "array" - }, - "references": { - "items": { - "type": "string" - }, - "type": "array" - }, - "reply_to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "message_id", - "in_reply_to", - "references", - "reply_to" - ], - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "mode", - "selected", - "full" - ], - "type": "object" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "participants": { - "additionalProperties": false, - "properties": { - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "reply_to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "from", - "to", - "cc", - "bcc", - "reply_to" - ], - "type": "object" - }, - "states": { - "additionalProperties": false, - "properties": { - "email_state": { - "type": [ - "string", - "null" - ] - }, - "option_hash": { - "type": "string" - } - }, - "required": [ - "email_state", - "option_hash" - ], - "type": "object" - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id", - "thread_id", - "subject", - "participants", - "dates", - "body", - "headers", - "attachments", - "states" - ], - "type": [ - "object", - "null" - ] - }, - { - "type": "object" - } - ] - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata only. Attachment contents are not parsed by this endpoint.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "body": { + "additionalProperties": false, + "properties": { + "extracted_links": { + "items": { + "type": "string" + }, + "type": "array" + }, + "format": { + "enum": [ + "text", + "html" + ], + "type": [ + "string", + "null" + ] + }, + "html": { + "description": "HTML body when requested. Returned as a JSON string and not as rendered content.", + "type": [ + "string", + "null" + ] + }, + "is_truncated": { + "type": "boolean" + }, + "quotes_stripped": { + "type": "boolean" + }, + "signature_stripped": { + "type": "boolean" + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "truncated_at_chars": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "format", + "text", + "html", + "is_truncated", + "truncated_at_chars", + "signature_stripped", + "quotes_stripped", + "extracted_links" + ], + "type": "object" + }, + "dates": { + "additionalProperties": false, + "properties": { + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "received_at", + "sent_at" + ], + "type": "object" + }, + "headers": { + "additionalProperties": false, + "properties": { + "full": { + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "mode": { + "enum": [ + "none", + "selected", + "full" + ], + "type": "string" + }, + "selected": { + "properties": { + "in_reply_to": { + "type": [ + "string", + "null" + ] + }, + "message_id": { + "items": { + "type": "string" + }, + "type": "array" + }, + "references": { + "items": { + "type": "string" + }, + "type": "array" + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "message_id", + "in_reply_to", + "references", + "reply_to" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "mode", + "selected", + "full" + ], + "type": "object" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "participants": { + "additionalProperties": false, + "properties": { + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "from": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "from", + "to", + "cc", + "bcc", + "reply_to" + ], + "type": "object" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "option_hash": { + "type": "string" + } + }, + "required": [ + "email_state", + "option_hash" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "thread_id", + "subject", + "participants", + "dates", + "body", + "headers", + "attachments", + "states" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } +]
- Changed
mailbox_list_messages1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "items": { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "flags": { - "additionalProperties": false, - "properties": { - "answered": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "flagged": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - } - }, - "required": [ - "seen", - "flagged", - "draft", - "answered" - ], - "type": "object" - }, - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "keywords": { - "description": "Active message keywords, including system flags and custom labels.", - "example": [ - "$seen", - "$flagged", - "agent_triaged" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "preview": { - "type": [ - "string", - "null" - ] - }, - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - }, - "size_bytes": { - "type": [ - "integer", - "null" - ] - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "thread_id", - "folder_ids", - "subject", - "preview", - "from", - "to", - "cc", - "bcc", - "received_at", - "sent_at", - "size_bytes", - "has_attachments", - "keywords", - "flags" - ], - "type": "object" - }, - "type": "array" - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "type": "string" - }, - "sync_state": { - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - }, - "pagination": { - "additionalProperties": false, - "properties": { - "has_more": { - "type": "boolean" - }, - "next_cursor": { - "type": "string" - } - }, - "required": [ - "has_more" - ], - "type": "object" - } - }, - "required": [ - "data", - "pagination" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + }, + "sync_state": { + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } +]
- Changed
mailbox_list_thread_messages1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "items": { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "flags": { - "additionalProperties": false, - "properties": { - "answered": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "flagged": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - } - }, - "required": [ - "seen", - "flagged", - "draft", - "answered" - ], - "type": "object" - }, - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "keywords": { - "description": "Active message keywords, including system flags and custom labels.", - "example": [ - "$seen", - "$flagged", - "agent_triaged" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "preview": { - "type": [ - "string", - "null" - ] - }, - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - }, - "size_bytes": { - "type": [ - "integer", - "null" - ] - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "thread_id", - "folder_ids", - "subject", - "preview", - "from", - "to", - "cc", - "bcc", - "received_at", - "sent_at", - "size_bytes", - "has_attachments", - "keywords", - "flags" - ], - "type": "object" - }, - "type": "array" - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "type": "string" - }, - "sync_state": { - "type": "string" - }, - "thread_id": { - "type": "string" - } - }, - "required": [ - "request_id", - "thread_id" - ], - "type": "object" - }, - "pagination": { - "additionalProperties": false, - "properties": { - "has_more": { - "type": "boolean" - }, - "next_cursor": { - "type": "string" - } - }, - "required": [ - "has_more" - ], - "type": "object" - } - }, - "required": [ - "data", - "pagination" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + }, + "sync_state": { + "type": "string" + }, + "thread_id": { + "type": "string" + } + }, + "required": [ + "request_id", + "thread_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } +]
- Changed
mailbox_list_threads1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "items": { - "additionalProperties": false, - "properties": { - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Thread ID", - "type": "string" - }, - "last_message": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "flags": { - "additionalProperties": false, - "properties": { - "answered": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "flagged": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - } - }, - "required": [ - "seen", - "flagged", - "draft", - "answered" - ], - "type": "object" - }, - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "keywords": { - "description": "Active message keywords, including system flags and custom labels.", - "example": [ - "$seen", - "$flagged", - "agent_triaged" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "preview": { - "type": [ - "string", - "null" - ] - }, - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - }, - "size_bytes": { - "type": [ - "integer", - "null" - ] - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "thread_id", - "folder_ids", - "subject", - "preview", - "from", - "to", - "cc", - "bcc", - "received_at", - "sent_at", - "size_bytes", - "has_attachments", - "keywords", - "flags" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "message_count": { - "type": "integer" - }, - "participants": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "states": { - "additionalProperties": false, - "properties": { - "email_state": { - "type": [ - "string", - "null" - ] - }, - "thread_state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "thread_state", - "email_state" - ], - "type": "object" - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "unread_count": { - "type": "integer" - } - }, - "required": [ - "id", - "subject", - "message_count", - "unread_count", - "has_attachments", - "folder_ids", - "participants", - "last_message", - "states" - ], - "type": "object" - }, - "type": "array" - }, - "meta": { - "additionalProperties": false, - "properties": { - "query_state": { - "type": "string" - }, - "request_id": { - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - }, - "pagination": { - "additionalProperties": false, - "properties": { - "has_more": { - "type": "boolean" - }, - "next_cursor": { - "type": "string" - } - }, - "required": [ - "has_more" - ], - "type": "object" - } - }, - "required": [ - "data", - "pagination" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Thread ID", + "type": "string" + }, + "last_message": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "message_count": { + "type": "integer" + }, + "participants": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "thread_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "thread_state", + "email_state" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "unread_count": { + "type": "integer" + } + }, + "required": [ + "id", + "subject", + "message_count", + "unread_count", + "has_attachments", + "folder_ids", + "participants", + "last_message", + "states" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "query_state": { + "type": "string" + }, + "request_id": { + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } +]
3 tool updates
v1.0.12- Changed
mailbox_get_me1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "created_at": { - "description": "ISO 8601 creation timestamp", - "type": "string" - }, - "display_name": { - "description": "Optional display name shown in outbound From headers", - "type": [ - "string", - "null" - ] - }, - "email": { - "description": "Mailbox email address (lowercase)", - "example": "agent@acme.com", - "type": "string" - }, - "id": { - "description": "Public ID", - "example": "mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - }, - "quota_bytes": { - "description": "Storage quota in bytes. Current writable tiers are 1 GB, 5 GB, and 50 GB.", - "type": [ - "integer", - "null" - ] - }, - "send_scope": { - "additionalProperties": false, - "properties": { - "group_public_ids": { - "description": "Delivery group public IDs (only when type=group)", - "items": { - "type": "string" - }, - "type": "array" - }, - "provider_public_ids": { - "description": "Provider public IDs (only when type=providers)", - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "description": "Outbound routing strategy. `all` lets the mailbox use any team-configured provider; `providers` restricts to the listed provider IDs; `group` routes via a delivery group.", - "enum": [ - "all", - "providers", - "group" - ], - "type": "string" - } - }, - "required": [ - "type" - ], - "type": [ - "object", - "null" - ] - }, - "status": { - "description": "active | suspended | deleted", - "example": "active", - "type": "string" - } - }, - "required": [ - "id", - "email", - "display_name", - "quota_bytes", - "send_scope", - "status", - "created_at" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "quota_used_bytes": { - "description": "Live storage usage in bytes. Omitted when usage is temporarily unavailable.", - "type": "integer" - } - }, - "type": "object" - } - ] - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "created_at": { + "description": "ISO 8601 creation timestamp", + "type": "string" + }, + "display_name": { + "description": "Optional display name shown in outbound From headers", + "type": [ + "string", + "null" + ] + }, + "email": { + "description": "Mailbox email address (lowercase)", + "example": "agent@acme.com", + "type": "string" + }, + "id": { + "description": "Public ID", + "example": "mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + }, + "quota_bytes": { + "description": "Storage quota in bytes. Current writable tiers are 1 GB, 5 GB, and 50 GB.", + "type": [ + "integer", + "null" + ] + }, + "quota_used_bytes": { + "description": "Live storage usage in bytes. Omitted when usage is temporarily unavailable.", + "type": "integer" + }, + "send_scope": { + "additionalProperties": false, + "properties": { + "group_public_ids": { + "description": "Delivery group public IDs (only when type=group)", + "items": { + "type": "string" + }, + "type": "array" + }, + "provider_public_ids": { + "description": "Provider public IDs (only when type=providers)", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "Outbound routing strategy. `all` lets the mailbox use any team-configured provider; `providers` restricts to the listed provider IDs; `group` routes via a delivery group.", + "enum": [ + "all", + "providers", + "group" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": [ + "object", + "null" + ] + }, + "status": { + "description": "active | suspended | deleted", + "example": "active", + "type": "string" + } + }, + "required": [ + "id", + "email", + "display_name", + "quota_bytes", + "send_scope", + "status", + "created_at" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } +]
- Changed
mailbox_get_message1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "flags": { - "additionalProperties": false, - "properties": { - "answered": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "flagged": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - } - }, - "required": [ - "seen", - "flagged", - "draft", - "answered" - ], - "type": "object" - }, - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "keywords": { - "description": "Active message keywords, including system flags and custom labels.", - "example": [ - "$seen", - "$flagged", - "agent_triaged" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "preview": { - "type": [ - "string", - "null" - ] - }, - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - }, - "size_bytes": { - "type": [ - "integer", - "null" - ] - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "thread_id", - "folder_ids", - "subject", - "preview", - "from", - "to", - "cc", - "bcc", - "received_at", - "sent_at", - "size_bytes", - "has_attachments", - "keywords", - "flags" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "attachments": { - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "html_body": { - "type": [ - "string", - "null" - ] - }, - "text_body": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "text_body", - "html_body" - ], - "type": "object" - } - ] - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "html_body": { + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "text_body": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags", + "text_body", + "html_body" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } +]
- Changed
mailbox_get_thread1 field changed- changed
Output schema / properties / result / allOfPrevious value: -[ - { - "properties": { - "meta": { - "additionalProperties": {}, - "properties": {}, - "type": "object" - }, - "ok": { - "enum": [ - true - ], - "type": "boolean" - } - }, - "required": [ - "ok", - "meta" - ], - "type": "object" - }, - { - "properties": { - "data": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Thread ID", - "type": "string" - }, - "last_message": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "attachments": { - "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", - "items": { - "additionalProperties": false, - "properties": { - "content_id": { - "description": "Content ID for inline attachments, when present.", - "type": [ - "string", - "null" - ] - }, - "content_type": { - "example": "application/pdf", - "type": "string" - }, - "disposition": { - "example": "attachment", - "type": [ - "string", - "null" - ] - }, - "download_url": { - "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", - "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", - "type": "string" - }, - "filename": { - "example": "invoice.pdf", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "Attachment blob ID.", - "type": "string" - }, - "size_bytes": { - "example": 12345, - "type": [ - "integer", - "null" - ] - } - }, - "required": [ - "id", - "filename", - "content_type", - "size_bytes", - "disposition", - "content_id" - ], - "type": "object" - }, - "type": "array" - }, - "bcc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "cc": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "flags": { - "additionalProperties": false, - "properties": { - "answered": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "flagged": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - } - }, - "required": [ - "seen", - "flagged", - "draft", - "answered" - ], - "type": "object" - }, - "folder_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "from": { - "allOf": [ - { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "has_attachments": { - "type": "boolean" - }, - "id": { - "description": "Message ID", - "type": "string" - }, - "keywords": { - "description": "Active message keywords, including system flags and custom labels.", - "example": [ - "$seen", - "$flagged", - "agent_triaged" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "preview": { - "type": [ - "string", - "null" - ] - }, - "received_at": { - "type": [ - "string", - "null" - ] - }, - "sent_at": { - "type": [ - "string", - "null" - ] - }, - "size_bytes": { - "type": [ - "integer", - "null" - ] - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "thread_id": { - "type": [ - "string", - "null" - ] - }, - "to": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "id", - "thread_id", - "folder_ids", - "subject", - "preview", - "from", - "to", - "cc", - "bcc", - "received_at", - "sent_at", - "size_bytes", - "has_attachments", - "keywords", - "flags" - ], - "type": "object" - }, - { - "type": [ - "object", - "null" - ] - } - ] - }, - "message_count": { - "type": "integer" - }, - "participants": { - "items": { - "additionalProperties": false, - "properties": { - "email": { - "example": "agent@example.com", - "format": "email", - "type": "string" - }, - "name": { - "example": "Support", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "email", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "states": { - "additionalProperties": false, - "properties": { - "email_state": { - "type": [ - "string", - "null" - ] - }, - "thread_state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "thread_state", - "email_state" - ], - "type": "object" - }, - "subject": { - "type": [ - "string", - "null" - ] - }, - "unread_count": { - "type": "integer" - } - }, - "required": [ - "id", - "subject", - "message_count", - "unread_count", - "has_attachments", - "folder_ids", - "participants", - "last_message", - "states" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "message_ids": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "message_ids" - ], - "type": "object" - } - ] - }, - "meta": { - "additionalProperties": false, - "properties": { - "request_id": { - "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Thread ID", + "type": "string" + }, + "last_message": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "message_count": { + "type": "integer" + }, + "message_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "participants": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "thread_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "thread_state", + "email_state" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "unread_count": { + "type": "integer" + } + }, + "required": [ + "id", + "subject", + "message_count", + "unread_count", + "has_attachments", + "folder_ids", + "participants", + "last_message", + "states", + "message_ids" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } +]
2 tool updates
v1.0.9- Changed
sending_send_email1 field changed- added
Input schema / properties / delivery_groupAdded value: +{ + "anyOf": [ + { + "pattern": "^dgrp_[a-z0-9][a-z0-9_-]{0,122}$", + "type": "string" + }, + { + "items": { + "pattern": "^dgrp_[a-z0-9][a-z0-9_-]{0,122}$", + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + ], + "description": "One delivery group public ID or a non-empty array of up to 50 IDs" +}
- Changed
sending_send_email_batch1 field changed- added
Input schema / properties / messages / items / properties / delivery_groupAdded value: +{ + "anyOf": [ + { + "pattern": "^dgrp_[a-z0-9][a-z0-9_-]{0,122}$", + "type": "string" + }, + { + "items": { + "pattern": "^dgrp_[a-z0-9][a-z0-9_-]{0,122}$", + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + ], + "description": "One delivery group public ID or a non-empty array of up to 50 IDs" +}
32 tool updates
v1.0.8- Changed
mailbox_batch_delete_messages4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "deleted": { + "items": { + "type": "string" + }, + "type": "array" + }, + "failed": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "id": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "id", + "code", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "not_found": { + "items": { + "type": "string" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "new_state": { + "type": [ + "string", + "null" + ] + }, + "old_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "old_state", + "new_state" + ], + "type": "object" + } + }, + "required": [ + "deleted", + "not_found", + "failed", + "states" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxBatchDeleteMessagesResultResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_batch_get_messages4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "messages": { + "items": { + "additionalProperties": false, + "properties": { + "content": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata only. Attachment contents are not parsed by this endpoint.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "body": { + "additionalProperties": false, + "properties": { + "extracted_links": { + "items": { + "type": "string" + }, + "type": "array" + }, + "format": { + "enum": [ + "text", + "html" + ], + "type": [ + "string", + "null" + ] + }, + "html": { + "description": "HTML body when requested. Returned as a JSON string and not as rendered content.", + "type": [ + "string", + "null" + ] + }, + "is_truncated": { + "type": "boolean" + }, + "quotes_stripped": { + "type": "boolean" + }, + "signature_stripped": { + "type": "boolean" + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "truncated_at_chars": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "format", + "text", + "html", + "is_truncated", + "truncated_at_chars", + "signature_stripped", + "quotes_stripped", + "extracted_links" + ], + "type": "object" + }, + "dates": { + "additionalProperties": false, + "properties": { + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "received_at", + "sent_at" + ], + "type": "object" + }, + "headers": { + "additionalProperties": false, + "properties": { + "full": { + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "mode": { + "enum": [ + "none", + "selected", + "full" + ], + "type": "string" + }, + "selected": { + "properties": { + "in_reply_to": { + "type": [ + "string", + "null" + ] + }, + "message_id": { + "items": { + "type": "string" + }, + "type": "array" + }, + "references": { + "items": { + "type": "string" + }, + "type": "array" + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "message_id", + "in_reply_to", + "references", + "reply_to" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "mode", + "selected", + "full" + ], + "type": "object" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "participants": { + "additionalProperties": false, + "properties": { + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "from", + "to", + "cc", + "bcc", + "reply_to" + ], + "type": "object" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "option_hash": { + "type": "string" + } + }, + "required": [ + "email_state", + "option_hash" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "thread_id", + "subject", + "participants", + "dates", + "body", + "headers", + "attachments", + "states" + ], + "type": [ + "object", + "null" + ] + }, + "message": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + "raw_body": { + "additionalProperties": false, + "properties": { + "body": { + "additionalProperties": false, + "properties": { + "html": { + "type": [ + "string", + "null" + ] + }, + "is_truncated": { + "type": "boolean" + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "truncated_at_chars": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "text", + "html", + "is_truncated", + "truncated_at_chars" + ], + "type": "object" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "part": { + "enum": [ + "text", + "html", + "both" + ], + "type": "string" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email_state" + ], + "type": "object" + }, + "thread_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "thread_id", + "part", + "body", + "states" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "message", + "raw_body", + "content" + ], + "type": "object" + }, + "type": "array" + }, + "not_found": { + "items": { + "type": "string" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email_state" + ], + "type": "object" + } + }, + "required": [ + "messages", + "not_found", + "states" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxBatchGetResultResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_batch_update_messages4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "failed": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "id": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "id", + "code", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "not_found": { + "items": { + "type": "string" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "new_state": { + "type": [ + "string", + "null" + ] + }, + "old_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "old_state", + "new_state" + ], + "type": "object" + }, + "updated": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "updated", + "not_found", + "failed", + "states" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxBatchUpdateMessagesResultResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_count_messages4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "sync_state": { + "type": [ + "string", + "null" + ] + }, + "total": { + "type": "integer" + } + }, + "required": [ + "total", + "sync_state" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxMessageCountResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_get_attachment3 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "const": true + } + }, + "required": [ + "ok", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "doc_url": { + "type": "string" + }, + "errors": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "field", + "code", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "param": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "const": false + } + }, + "required": [ + "ok", + "error" + ], + "type": "object" + } +]
- Changed
mailbox_get_changes4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "anyOf": [ + { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "created": { + "items": { + "type": "string" + }, + "type": "array" + }, + "destroyed": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_more": { + "type": "boolean" + }, + "new_state": { + "type": "string" + }, + "old_state": { + "type": [ + "string", + "null" + ] + }, + "sync_required": { + "description": "When true, refetch this resource list instead of applying the incremental arrays.", + "type": "boolean" + }, + "updated": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_properties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "old_state", + "new_state", + "has_more", + "created", + "updated", + "destroyed" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + } + }, + { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "types": { + "additionalProperties": false, + "properties": { + "folders": { + "additionalProperties": false, + "properties": { + "created": { + "items": { + "type": "string" + }, + "type": "array" + }, + "destroyed": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_more": { + "type": "boolean" + }, + "new_state": { + "type": "string" + }, + "old_state": { + "type": [ + "string", + "null" + ] + }, + "sync_required": { + "description": "When true, refetch this resource list instead of applying the incremental arrays.", + "type": "boolean" + }, + "updated": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_properties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "old_state", + "new_state", + "has_more", + "created", + "updated", + "destroyed" + ], + "type": "object" + }, + "identities": { + "additionalProperties": false, + "properties": { + "created": { + "items": { + "type": "string" + }, + "type": "array" + }, + "destroyed": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_more": { + "type": "boolean" + }, + "new_state": { + "type": "string" + }, + "old_state": { + "type": [ + "string", + "null" + ] + }, + "sync_required": { + "description": "When true, refetch this resource list instead of applying the incremental arrays.", + "type": "boolean" + }, + "updated": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_properties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "old_state", + "new_state", + "has_more", + "created", + "updated", + "destroyed" + ], + "type": "object" + }, + "messages": { + "additionalProperties": false, + "properties": { + "created": { + "items": { + "type": "string" + }, + "type": "array" + }, + "destroyed": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_more": { + "type": "boolean" + }, + "new_state": { + "type": "string" + }, + "old_state": { + "type": [ + "string", + "null" + ] + }, + "sync_required": { + "description": "When true, refetch this resource list instead of applying the incremental arrays.", + "type": "boolean" + }, + "updated": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_properties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "old_state", + "new_state", + "has_more", + "created", + "updated", + "destroyed" + ], + "type": "object" + }, + "quotas": { + "additionalProperties": false, + "properties": { + "created": { + "items": { + "type": "string" + }, + "type": "array" + }, + "destroyed": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_more": { + "type": "boolean" + }, + "new_state": { + "type": "string" + }, + "old_state": { + "type": [ + "string", + "null" + ] + }, + "sync_required": { + "description": "When true, refetch this resource list instead of applying the incremental arrays.", + "type": "boolean" + }, + "updated": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_properties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "old_state", + "new_state", + "has_more", + "created", + "updated", + "destroyed" + ], + "type": "object" + }, + "submissions": { + "additionalProperties": false, + "properties": { + "created": { + "items": { + "type": "string" + }, + "type": "array" + }, + "destroyed": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_more": { + "type": "boolean" + }, + "new_state": { + "type": "string" + }, + "old_state": { + "type": [ + "string", + "null" + ] + }, + "sync_required": { + "description": "When true, refetch this resource list instead of applying the incremental arrays.", + "type": "boolean" + }, + "updated": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_properties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "old_state", + "new_state", + "has_more", + "created", + "updated", + "destroyed" + ], + "type": "object" + }, + "threads": { + "additionalProperties": false, + "properties": { + "created": { + "items": { + "type": "string" + }, + "type": "array" + }, + "destroyed": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_more": { + "type": "boolean" + }, + "new_state": { + "type": "string" + }, + "old_state": { + "type": [ + "string", + "null" + ] + }, + "sync_required": { + "description": "When true, refetch this resource list instead of applying the incremental arrays.", + "type": "boolean" + }, + "updated": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updated_properties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "old_state", + "new_state", + "has_more", + "created", + "updated", + "destroyed" + ], + "type": "object" + } + }, + "type": "object" + } + }, + "required": [ + "types" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + } + } + ] + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_get_connection4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "credential": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "api_key", + "oauth", + "agent_token" + ], + "example": "api_key", + "type": "string" + } + }, + "required": [ + "id", + "type", + "name" + ], + "type": "object" + }, + "label": { + "description": "Display label for this connection.", + "type": "string" + }, + "mailboxes": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "format": "email", + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "id", + "email" + ], + "type": "object" + }, + "type": "array" + }, + "permissions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "team": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + } + }, + "required": [ + "team", + "credential", + "label", + "permissions", + "mailboxes" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "ConnectionResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_get_identity4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "email": { + "format": "email", + "type": "string" + }, + "html_signature": { + "type": "string" + }, + "id": { + "description": "Identity ID", + "type": "string" + }, + "may_delete": { + "description": "Whether the mailbox service allows this identity to be deleted.", + "type": "boolean" + }, + "name": { + "type": "string" + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "text_signature": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "email", + "reply_to", + "bcc", + "text_signature", + "html_signature", + "may_delete" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxIdentityResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_get_me4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "created_at": { + "description": "ISO 8601 creation timestamp", + "type": "string" + }, + "display_name": { + "description": "Optional display name shown in outbound From headers", + "type": [ + "string", + "null" + ] + }, + "email": { + "description": "Mailbox email address (lowercase)", + "example": "agent@acme.com", + "type": "string" + }, + "id": { + "description": "Public ID", + "example": "mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + }, + "quota_bytes": { + "description": "Storage quota in bytes. Current writable tiers are 1 GB, 5 GB, and 50 GB.", + "type": [ + "integer", + "null" + ] + }, + "send_scope": { + "additionalProperties": false, + "properties": { + "group_public_ids": { + "description": "Delivery group public IDs (only when type=group)", + "items": { + "type": "string" + }, + "type": "array" + }, + "provider_public_ids": { + "description": "Provider public IDs (only when type=providers)", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "Outbound routing strategy. `all` lets the mailbox use any team-configured provider; `providers` restricts to the listed provider IDs; `group` routes via a delivery group.", + "enum": [ + "all", + "providers", + "group" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": [ + "object", + "null" + ] + }, + "status": { + "description": "active | suspended | deleted", + "example": "active", + "type": "string" + } + }, + "required": [ + "id", + "email", + "display_name", + "quota_bytes", + "send_scope", + "status", + "created_at" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "quota_used_bytes": { + "description": "Live storage usage in bytes. Omitted when usage is temporarily unavailable.", + "type": "integer" + } + }, + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxMeItemResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_get_message4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "attachments": { + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "html_body": { + "type": [ + "string", + "null" + ] + }, + "text_body": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "text_body", + "html_body" + ], + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxMessageDetailResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_get_session4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "capabilities": { + "additionalProperties": false, + "properties": { + "attachments": { + "additionalProperties": false, + "properties": { + "download": { + "type": "boolean" + }, + "metadata": { + "type": "boolean" + }, + "parsing": { + "type": "boolean" + }, + "range_download": { + "type": "boolean" + }, + "send_with_uploaded_blob": { + "type": "boolean" + }, + "upload": { + "type": "boolean" + } + }, + "required": [ + "upload", + "download", + "range_download", + "metadata", + "parsing", + "send_with_uploaded_blob" + ], + "type": "object" + }, + "folders": { + "additionalProperties": false, + "properties": { + "changes": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "delete": { + "type": "boolean" + }, + "detail": { + "type": "boolean" + }, + "list": { + "type": "boolean" + }, + "query_changes": { + "type": "boolean" + }, + "update": { + "type": "boolean" + } + }, + "required": [ + "list", + "detail", + "create", + "update", + "delete", + "changes", + "query_changes" + ], + "type": "object" + }, + "identities": { + "additionalProperties": false, + "properties": { + "changes": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "delete": { + "type": "boolean" + }, + "list": { + "type": "boolean" + }, + "update": { + "type": "boolean" + } + }, + "required": [ + "list", + "changes", + "create", + "update", + "delete" + ], + "type": "object" + }, + "messages": { + "additionalProperties": false, + "properties": { + "batch_get": { + "type": "boolean" + }, + "batch_update": { + "type": "boolean" + }, + "changes": { + "type": "boolean" + }, + "clean_content": { + "type": "boolean" + }, + "count": { + "type": "boolean" + }, + "delete": { + "type": "boolean" + }, + "detail": { + "type": "boolean" + }, + "keywords": { + "type": "boolean" + }, + "list": { + "type": "boolean" + }, + "permanent_delete": { + "type": "boolean" + }, + "query_changes": { + "type": "boolean" + }, + "raw_body": { + "type": "boolean" + }, + "search_snippets": { + "type": "boolean" + }, + "update_fields": { + "items": { + "enum": [ + "seen", + "flagged", + "keywords" + ], + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "list", + "detail", + "raw_body", + "clean_content", + "batch_get", + "count", + "search_snippets", + "changes", + "query_changes", + "update_fields", + "keywords", + "batch_update", + "delete", + "permanent_delete" + ], + "type": "object" + }, + "quotas": { + "additionalProperties": false, + "properties": { + "changes": { + "type": "boolean" + }, + "list": { + "type": "boolean" + }, + "update": { + "type": "boolean" + }, + "usage": { + "type": "boolean" + } + }, + "required": [ + "list", + "usage", + "changes", + "update" + ], + "type": "object" + }, + "submissions": { + "additionalProperties": false, + "properties": { + "changes": { + "type": "boolean" + }, + "detail": { + "type": "boolean" + }, + "list": { + "type": "boolean" + }, + "send": { + "type": "boolean" + } + }, + "required": [ + "list", + "detail", + "changes", + "send" + ], + "type": "object" + }, + "sync": { + "additionalProperties": false, + "properties": { + "query_changes": { + "items": { + "enum": [ + "messages", + "folders" + ], + "type": "string" + }, + "type": "array" + }, + "typed_changes": { + "type": "boolean" + }, + "types": { + "items": { + "enum": [ + "messages", + "folders", + "threads", + "submissions", + "identities", + "quotas" + ], + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "typed_changes", + "types", + "query_changes" + ], + "type": "object" + }, + "threads": { + "additionalProperties": false, + "properties": { + "changes": { + "type": "boolean" + }, + "clean_content": { + "type": "boolean" + }, + "detail": { + "type": "boolean" + }, + "list": { + "type": "boolean" + }, + "messages": { + "type": "boolean" + } + }, + "required": [ + "list", + "detail", + "messages", + "clean_content", + "changes" + ], + "type": "object" + } + }, + "required": [ + "messages", + "threads", + "folders", + "submissions", + "identities", + "quotas", + "attachments", + "sync" + ], + "type": "object" + }, + "endpoints": { + "additionalProperties": false, + "properties": { + "folders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mailbox": { + "items": { + "type": "string" + }, + "type": "array" + }, + "messages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "submissions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sync": { + "items": { + "type": "string" + }, + "type": "array" + }, + "threads": { + "items": { + "type": "string" + }, + "type": "array" + }, + "usage": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "mailbox", + "messages", + "threads", + "folders", + "submissions", + "usage", + "sync" + ], + "type": "object" + }, + "gated": { + "additionalProperties": false, + "description": "Flags are true when a feature is intentionally unavailable through the mailbox API.", + "properties": { + "attachment_parsing": { + "type": "boolean" + }, + "blob_copy": { + "type": "boolean" + }, + "blob_lookup": { + "type": "boolean" + }, + "events": { + "type": "boolean" + }, + "filter_script_writes": { + "type": "boolean" + }, + "identity_mutation": { + "type": "boolean" + }, + "message_copy": { + "type": "boolean" + }, + "message_import": { + "type": "boolean" + }, + "message_parse": { + "type": "boolean" + }, + "quota_mutation": { + "type": "boolean" + }, + "raw_protocol": { + "type": "boolean" + }, + "vacation_response": { + "type": "boolean" + } + }, + "required": [ + "identity_mutation", + "quota_mutation", + "vacation_response", + "filter_script_writes", + "events", + "raw_protocol", + "attachment_parsing", + "message_copy", + "message_import", + "message_parse", + "blob_lookup", + "blob_copy" + ], + "type": "object" + }, + "limits": { + "additionalProperties": false, + "properties": { + "attachment_upload_bytes_max": { + "type": "integer" + }, + "batch_ids_max": { + "type": "integer" + }, + "body_chars_max": { + "type": "integer" + }, + "changes_limit_max": { + "type": "integer" + }, + "inline_attachment_bytes_max": { + "type": "integer" + }, + "keywords_per_update_max": { + "type": "integer" + }, + "list_limit_max": { + "type": "integer" + }, + "message_body_chars_default": { + "type": "integer" + }, + "outbound_raw_message_bytes_max": { + "type": "integer" + }, + "thread_body_chars_default": { + "type": "integer" + } + }, + "required": [ + "list_limit_max", + "changes_limit_max", + "batch_ids_max", + "message_body_chars_default", + "thread_body_chars_default", + "body_chars_max", + "inline_attachment_bytes_max", + "attachment_upload_bytes_max", + "outbound_raw_message_bytes_max", + "keywords_per_update_max" + ], + "type": "object" + }, + "mailbox": { + "additionalProperties": false, + "properties": { + "display_name": { + "type": [ + "string", + "null" + ] + }, + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "id": { + "description": "Mailbox public ID", + "example": "mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "id", + "email", + "display_name" + ], + "type": "object" + }, + "states": { + "additionalProperties": false, + "properties": { + "folders": { + "type": "string" + }, + "identities": { + "type": "string" + }, + "messages": { + "type": "string" + }, + "quotas": { + "type": "string" + }, + "submissions": { + "type": "string" + }, + "threads": { + "type": "string" + } + }, + "required": [ + "messages", + "folders", + "threads", + "submissions", + "identities", + "quotas" + ], + "type": "object" + } + }, + "required": [ + "mailbox", + "states", + "capabilities", + "limits", + "gated", + "endpoints" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxSessionResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_get_thread4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Thread ID", + "type": "string" + }, + "last_message": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "message_count": { + "type": "integer" + }, + "participants": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "thread_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "thread_state", + "email_state" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "unread_count": { + "type": "integer" + } + }, + "required": [ + "id", + "subject", + "message_count", + "unread_count", + "has_attachments", + "folder_ids", + "participants", + "last_message", + "states" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "message_ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "message_ids" + ], + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxThreadDetailResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_list_body4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "body": { + "additionalProperties": false, + "properties": { + "html": { + "type": [ + "string", + "null" + ] + }, + "is_truncated": { + "type": "boolean" + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "truncated_at_chars": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "text", + "html", + "is_truncated", + "truncated_at_chars" + ], + "type": "object" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "part": { + "enum": [ + "text", + "html", + "both" + ], + "type": "string" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email_state" + ], + "type": "object" + }, + "thread_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "thread_id", + "part", + "body", + "states" + ], + "type": [ + "object", + "null" + ] + }, + { + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxRawBodyResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_list_content4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata only. Attachment contents are not parsed by this endpoint.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "body": { + "additionalProperties": false, + "properties": { + "extracted_links": { + "items": { + "type": "string" + }, + "type": "array" + }, + "format": { + "enum": [ + "text", + "html" + ], + "type": [ + "string", + "null" + ] + }, + "html": { + "description": "HTML body when requested. Returned as a JSON string and not as rendered content.", + "type": [ + "string", + "null" + ] + }, + "is_truncated": { + "type": "boolean" + }, + "quotes_stripped": { + "type": "boolean" + }, + "signature_stripped": { + "type": "boolean" + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "truncated_at_chars": { + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "format", + "text", + "html", + "is_truncated", + "truncated_at_chars", + "signature_stripped", + "quotes_stripped", + "extracted_links" + ], + "type": "object" + }, + "dates": { + "additionalProperties": false, + "properties": { + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "received_at", + "sent_at" + ], + "type": "object" + }, + "headers": { + "additionalProperties": false, + "properties": { + "full": { + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "mode": { + "enum": [ + "none", + "selected", + "full" + ], + "type": "string" + }, + "selected": { + "properties": { + "in_reply_to": { + "type": [ + "string", + "null" + ] + }, + "message_id": { + "items": { + "type": "string" + }, + "type": "array" + }, + "references": { + "items": { + "type": "string" + }, + "type": "array" + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "message_id", + "in_reply_to", + "references", + "reply_to" + ], + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "mode", + "selected", + "full" + ], + "type": "object" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "participants": { + "additionalProperties": false, + "properties": { + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "from", + "to", + "cc", + "bcc", + "reply_to" + ], + "type": "object" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "option_hash": { + "type": "string" + } + }, + "required": [ + "email_state", + "option_hash" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "thread_id", + "subject", + "participants", + "dates", + "body", + "headers", + "attachments", + "states" + ], + "type": [ + "object", + "null" + ] + }, + { + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxMessageContentResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_list_folders4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "can_add_items": { + "description": "Whether messages can be moved into this folder.", + "type": "boolean" + }, + "id": { + "description": "Folder ID", + "type": "string" + }, + "name": { + "type": "string" + }, + "parent_id": { + "type": [ + "string", + "null" + ] + }, + "role": { + "description": "System role when the folder is a built-in folder.", + "type": [ + "string", + "null" + ] + }, + "sort_order": { + "type": [ + "integer", + "null" + ] + }, + "total_messages": { + "type": "integer" + }, + "unread_messages": { + "type": "integer" + } + }, + "required": [ + "id", + "name", + "parent_id", + "role", + "sort_order", + "total_messages", + "unread_messages", + "can_add_items" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxFolderCursorListResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_list_granted_mailboxes4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "description": "Mailbox email address", + "example": "agent@acme.com", + "type": "string" + }, + "id": { + "description": "Mailbox public ID", + "example": "mbx_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "id", + "email" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "GrantedMailboxListResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_list_identities4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "email": { + "format": "email", + "type": "string" + }, + "html_signature": { + "type": "string" + }, + "id": { + "description": "Identity ID", + "type": "string" + }, + "may_delete": { + "description": "Whether the mailbox service allows this identity to be deleted.", + "type": "boolean" + }, + "name": { + "type": "string" + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "text_signature": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "email", + "reply_to", + "bcc", + "text_signature", + "html_signature", + "may_delete" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "identity_state": { + "type": "string" + }, + "request_id": { + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxIdentityCursorListResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_list_messages4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + }, + "sync_state": { + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxMessageSummaryCursorListResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_list_thread_messages4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + }, + "sync_state": { + "type": "string" + }, + "thread_id": { + "type": "string" + } + }, + "required": [ + "request_id", + "thread_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxThreadMessageSummaryCursorListResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_list_threads4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "items": { + "additionalProperties": false, + "properties": { + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Thread ID", + "type": "string" + }, + "last_message": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "description": "Attachment metadata for this message. Each item includes a short-lived `download_url`; if it expires, fetch message metadata again.", + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "cc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "flags": { + "additionalProperties": false, + "properties": { + "answered": { + "type": "boolean" + }, + "draft": { + "type": "boolean" + }, + "flagged": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + } + }, + "required": [ + "seen", + "flagged", + "draft", + "answered" + ], + "type": "object" + }, + "folder_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "from": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "has_attachments": { + "type": "boolean" + }, + "id": { + "description": "Message ID", + "type": "string" + }, + "keywords": { + "description": "Active message keywords, including system flags and custom labels.", + "example": [ + "$seen", + "$flagged", + "agent_triaged" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "preview": { + "type": [ + "string", + "null" + ] + }, + "received_at": { + "type": [ + "string", + "null" + ] + }, + "sent_at": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "thread_id": { + "type": [ + "string", + "null" + ] + }, + "to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "id", + "thread_id", + "folder_ids", + "subject", + "preview", + "from", + "to", + "cc", + "bcc", + "received_at", + "sent_at", + "size_bytes", + "has_attachments", + "keywords", + "flags" + ], + "type": "object" + }, + { + "type": [ + "object", + "null" + ] + } + ] + }, + "message_count": { + "type": "integer" + }, + "participants": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "states": { + "additionalProperties": false, + "properties": { + "email_state": { + "type": [ + "string", + "null" + ] + }, + "thread_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "thread_state", + "email_state" + ], + "type": "object" + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "unread_count": { + "type": "integer" + } + }, + "required": [ + "id", + "subject", + "message_count", + "unread_count", + "has_attachments", + "folder_ids", + "participants", + "last_message", + "states" + ], + "type": "object" + }, + "type": "array" + }, + "meta": { + "additionalProperties": false, + "properties": { + "query_state": { + "type": "string" + }, + "request_id": { + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "pagination": { + "additionalProperties": false, + "properties": { + "has_more": { + "type": "boolean" + }, + "next_cursor": { + "type": "string" + } + }, + "required": [ + "has_more" + ], + "type": "object" + } + }, + "required": [ + "data", + "pagination" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxThreadSummaryCursorListResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_read_attachment3 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bytes_read": { + "minimum": 0, + "type": "integer" + }, + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "read_mode": { + "const": "text" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + }, + "text": { + "type": "string" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id", + "read_mode", + "text", + "truncated", + "bytes_read" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "read_mode": { + "const": "resource_link" + }, + "resource_link": { + "additionalProperties": false, + "properties": { + "mime_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "size_bytes": { + "type": [ + "integer", + "null" + ] + }, + "uri": { + "type": "string" + } + }, + "required": [ + "uri", + "name", + "mime_type", + "size_bytes" + ], + "type": "object" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + }, + "text": { + "type": "null" + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id", + "read_mode", + "text", + "resource_link" + ], + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "const": true + } + }, + "required": [ + "ok", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "doc_url": { + "type": "string" + }, + "errors": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "field", + "code", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "param": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "const": false + } + }, + "required": [ + "ok", + "error" + ], + "type": "object" + } +]
- Changed
mailbox_search_message_snippets4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "not_found": { + "items": { + "type": "string" + }, + "type": "array" + }, + "snippets": { + "items": { + "additionalProperties": false, + "properties": { + "message_id": { + "type": "string" + }, + "preview": { + "description": "Body preview snippet. May include mark tags.", + "type": [ + "string", + "null" + ] + }, + "subject": { + "description": "Subject snippet. May include mark tags.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "message_id", + "subject", + "preview" + ], + "type": "object" + }, + "type": "array" + }, + "sync_state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "snippets", + "not_found", + "sync_state" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxSearchSnippetsResultResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_send_message4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "message_id": { + "type": "string" + }, + "status": { + "enum": [ + "queued" + ], + "type": "string" + } + }, + "required": [ + "message_id", + "status" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxSendResultResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_update_identity4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "bcc": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "email": { + "format": "email", + "type": "string" + }, + "html_signature": { + "type": "string" + }, + "id": { + "description": "Identity ID", + "type": "string" + }, + "may_delete": { + "description": "Whether the mailbox service allows this identity to be deleted.", + "type": "boolean" + }, + "name": { + "type": "string" + }, + "reply_to": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "example": "agent@example.com", + "format": "email", + "type": "string" + }, + "name": { + "example": "Support", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "email", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "text_signature": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "email", + "reply_to", + "bcc", + "text_signature", + "html_signature", + "may_delete" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "MailboxIdentityResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
mailbox_upload_attachment5 fields changed- changed
Input schema / properties / content_base64 / descriptionPrevious value: -"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."New value: +"Last-resort inline base64 for tiny agent-authored files only. Decoded content must be at most 32 KiB; use presign_upload_url for real files." - removed
Input schema / properties / file_pathRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Local file path for stdio MCP only. The path must be inside a client-declared MCP root; hosted MCP rejects it." -} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "blob_id": { + "description": "Uploaded attachment blob ID for a later send request.", + "type": "string" + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": "integer" + } + }, + "required": [ + "blob_id", + "filename", + "content_type", + "size_bytes" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "expires_at": { + "description": "Upload URL expiry time.", + "format": "date-time", + "type": "string" + }, + "headers": { + "additionalProperties": false, + "description": "Headers that must be sent exactly with the PUT request.", + "properties": { + "Content-Length": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + }, + "required": [ + "Content-Type", + "Content-Length" + ], + "type": "object" + }, + "max_size_bytes": { + "description": "Maximum accepted attachment size in bytes.", + "type": "integer" + }, + "method": { + "description": "HTTP method to use with `upload_url`.", + "enum": [ + "PUT" + ], + "type": "string" + }, + "upload_id": { + "description": "Short-lived upload intent ID.", + "type": "string" + }, + "upload_url": { + "description": "Short-lived signed PUT URL for this exact attachment. Upload promptly; if it expires, create a new upload URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/attachment-uploads/upl_123?upload_token=...", + "type": "string" + } + }, + "required": [ + "upload_id", + "upload_url", + "method", + "expires_at", + "headers", + "max_size_bytes" + ], + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "const": true + } + }, + "required": [ + "ok", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "doc_url": { + "type": "string" + }, + "errors": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "field", + "code", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "param": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "const": false + } + }, + "required": [ + "ok", + "error" + ], + "type": "object" + } +]
- Changed
mailbox_wait_for_message3 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "matched": { + "type": "boolean" + }, + "message": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "attachments": { + "items": { + "additionalProperties": false, + "properties": { + "content_id": { + "description": "Content ID for inline attachments, when present.", + "type": [ + "string", + "null" + ] + }, + "content_type": { + "example": "application/pdf", + "type": "string" + }, + "disposition": { + "example": "attachment", + "type": [ + "string", + "null" + ] + }, + "download_url": { + "description": "Short-lived URL for this exact attachment. Fetch it promptly; if it expires, call the message or attachment metadata endpoint again to receive a fresh URL.", + "example": "https://app.sendmux.ai/api/v1/mailbox/messages/msg_123/attachment-downloads/attref_abc123?download_token=...", + "type": "string" + }, + "filename": { + "example": "invoice.pdf", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Attachment blob ID.", + "type": "string" + }, + "size_bytes": { + "example": 12345, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "id", + "filename", + "content_type", + "size_bytes", + "disposition", + "content_id" + ], + "type": "object" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "received_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "received_at", + "attachments" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "next_after": { + "type": "string" + } + }, + "required": [ + "matched", + "message", + "next_after" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + }, + "sync_state": { + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "ok": { + "const": true + } + }, + "required": [ + "ok", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "doc_url": { + "type": "string" + }, + "errors": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "field", + "code", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "param": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + }, + "sync_state": { + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "ok": { + "const": false + } + }, + "required": [ + "ok", + "error" + ], + "type": "object" + } +]
- Changed
sending_create_attachment_upload5 fields changed- added
Input schema / properties / Idempotency-Key / exampleAdded value: +"order-12345-2026-04-24" - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "description": "Unique request identifier", + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "expires_at": { + "description": "ISO timestamp when the upload URL expires.", + "example": "2026-07-07T08:15:00.000Z", + "format": "date-time", + "type": "string" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "Headers that must be sent with the PUT upload request.", + "example": { + "Content-Length": "20480", + "Content-Type": "application/pdf", + "X-Sendmux-Upload-Token": "smx_upload_..." + }, + "type": "object" + }, + "max_size_bytes": { + "description": "Maximum upload size in bytes", + "example": 18874368, + "type": "integer" + }, + "method": { + "description": "HTTP method for upload_url", + "enum": [ + "PUT" + ], + "type": "string" + }, + "upload_id": { + "description": "Temporary upload intent ID.", + "example": "upl_tz4a98xxat96iws9zmbrgj3a", + "pattern": "^upl_[a-z0-9]{24}$", + "type": "string" + }, + "upload_url": { + "description": "Short-lived URL that accepts a binary PUT with the returned headers.", + "example": "https://smtp.sendmux.ai/api/v1/emails/attachment-uploads/upl_tz4a98xxat96iws9zmbrgj3a", + "format": "uri", + "type": "string" + } + }, + "required": [ + "upload_id", + "upload_url", + "method", + "expires_at", + "max_size_bytes", + "headers" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "AttachmentUploadIntentResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
sending_get_attachment4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "description": "Unique request identifier", + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "attachment_id": { + "description": "Temporary attachment ID to use in email attachments[].", + "example": "att_tz4a98xxat96iws9zmbrgj3a", + "pattern": "^att_[a-z0-9]{24}$", + "type": "string" + }, + "content_type": { + "description": "Stored attachment MIME type", + "example": "application/pdf", + "type": "string" + }, + "expires_at": { + "description": "ISO timestamp when this temporary attachment reference expires.", + "example": "2026-07-07T08:15:00.000Z", + "format": "date-time", + "type": "string" + }, + "filename": { + "description": "Stored attachment filename", + "example": "analysis.pdf", + "type": "string" + }, + "size_bytes": { + "description": "Stored attachment byte size", + "example": 20480, + "type": "integer" + } + }, + "required": [ + "attachment_id", + "filename", + "content_type", + "size_bytes", + "expires_at" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "AttachmentUploadResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
sending_get_connection4 fields changed- added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "description": "Unique request identifier", + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "credential": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "api_key", + "oauth", + "agent_token" + ], + "example": "api_key", + "type": "string" + } + }, + "required": [ + "id", + "type", + "name" + ], + "type": "object" + }, + "label": { + "description": "Display label for this connection.", + "type": "string" + }, + "mailboxes": { + "items": { + "additionalProperties": false, + "properties": { + "email": { + "format": "email", + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "id", + "email" + ], + "type": "object" + }, + "type": "array" + }, + "permissions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "team": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + } + }, + "required": [ + "team", + "credential", + "label", + "permissions", + "mailboxes" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "ConnectionResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
sending_send_email5 fields changed- added
Input schema / properties / Idempotency-Key / exampleAdded value: +"order-12345-2026-04-24" - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "description": "Unique request identifier", + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "message_id": { + "description": "Unique message identifier (eml_ prefix + 24 alphanumeric chars)", + "example": "eml_tz4a98xxat96iws9zmbrgj3a", + "pattern": "^eml_[a-z0-9]{24}$", + "type": "string" + }, + "status": { + "description": "Message queuing status", + "enum": [ + "queued" + ], + "type": "string" + } + }, + "required": [ + "message_id", + "status" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "SendSuccessResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
sending_send_email_batch5 fields changed- added
Input schema / properties / Idempotency-Key / exampleAdded value: +"order-12345-2026-04-24" - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "result": { + "allOf": [ + { + "properties": { + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "description": "Unique request identifier", + "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx", + "type": "string" + } + }, + "required": [ + "request_id" + ], + "type": "object" + }, + "ok": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "ok", + "meta" + ], + "type": "object" + }, + { + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "results": { + "items": { + "additionalProperties": false, + "properties": { + "error": { + "allOf": [ + { + "additionalProperties": false, + "properties": { + "code": { + "description": "Machine-readable error code", + "example": "validation_error", + "type": "string" + }, + "doc_url": { + "description": "Link to error documentation", + "format": "uri", + "type": "string" + }, + "errors": { + "description": "Accumulated per-field issues (validation errors)", + "items": { + "additionalProperties": false, + "properties": { + "code": { + "description": "Issue code from the validator", + "example": "invalid_string", + "type": "string" + }, + "field": { + "description": "Dot-path to the failing field", + "example": "to.email", + "type": "string" + }, + "message": { + "description": "Human-readable issue message", + "type": "string" + } + }, + "required": [ + "field", + "code", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "Human-readable error description", + "type": "string" + }, + "param": { + "description": "Parameter that caused the error", + "type": "string" + }, + "retryable": { + "description": "True when the client may safely retry the same request. 429 and 5xx default true; 4xx default false.", + "type": "boolean" + } + }, + "required": [ + "code", + "message", + "retryable" + ], + "type": "object" + }, + { + "description": "Error details (only if failed)" + } + ] + }, + "index": { + "description": "Position in the input array", + "type": "integer" + }, + "message_id": { + "description": "Message ID (null if failed)", + "pattern": "^eml_[a-z0-9]{24}$", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Result status", + "enum": [ + "queued", + "failed" + ], + "type": "string" + } + }, + "required": [ + "index", + "message_id", + "status" + ], + "type": "object" + }, + "type": "array" + }, + "summary": { + "additionalProperties": false, + "properties": { + "failed": { + "description": "Failed count", + "type": "integer" + }, + "queued": { + "description": "Successfully queued count", + "type": "integer" + }, + "total": { + "description": "Total messages in batch", + "type": "integer" + } + }, + "required": [ + "total", + "queued", + "failed" + ], + "type": "object" + } + }, + "required": [ + "results", + "summary" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + ], + "unevaluatedProperties": { + "not": {} + }, + "x-fastmcp-top-level-schema": "BatchSendSuccessResponse" + } +} - added
Output schema / requiredAdded value: +[ + "result" +]
- Changed
sending_upload_attachment5 fields changed- changed
Input schema / properties / content_base64 / descriptionPrevious value: -"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."New value: +"Last-resort inline base64 for tiny agent-authored files only. Decoded content must be at most 32 KiB; use a presigned upload for real files." - removed
Input schema / properties / file_pathRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Local file path for stdio MCP only. The path must be inside a client-declared MCP root; hosted MCP rejects it." -} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "data": { + "additionalProperties": false, + "properties": { + "attachment_id": { + "description": "Temporary attachment ID to use in email attachments[].", + "example": "att_tz4a98xxat96iws9zmbrgj3a", + "pattern": "^att_[a-z0-9]{24}$", + "type": "string" + }, + "content_type": { + "description": "Stored attachment MIME type", + "example": "application/pdf", + "type": "string" + }, + "expires_at": { + "description": "ISO timestamp when this temporary attachment reference expires.", + "example": "2026-07-07T08:15:00.000Z", + "format": "date-time", + "type": "string" + }, + "filename": { + "description": "Stored attachment filename", + "example": "analysis.pdf", + "type": "string" + }, + "size_bytes": { + "description": "Stored attachment byte size", + "example": 20480, + "type": "integer" + } + }, + "required": [ + "attachment_id", + "filename", + "content_type", + "size_bytes", + "expires_at" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "const": true + } + }, + "required": [ + "ok", + "data" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "doc_url": { + "type": "string" + }, + "errors": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "field", + "code", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "param": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "meta": { + "additionalProperties": false, + "properties": { + "request_id": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "const": false + } + }, + "required": [ + "ok", + "error" + ], + "type": "object" + } +]
2 tool updates
v1.0.3- Added
mailbox_get_connection - Added
sending_get_connection
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
Scored across 32 tools
The mailbox_ and sending_ prefixes plus mostly distinct resource/action pairs make the surface navigable, but several tools are easy to confuse: get_message/list_body/list_content, get_attachment/read_attachment, and the two upload-attachment variants have overlapping boundaries. An agent would need to read descriptions carefully to avoid selecting the wrong one for a content-heavy task.
All tools follow a consistent snake_case prefix_verb_noun pattern, with mailbox_ and sending_ clearly separating the two API domains. Names like sending_create_attachment_upload are verbose but still predictable and consistent with the rest of the set.
With 32 tools, this exceeds the comfortable range and pushes into the too-heavy zone. Many tools could be consolidated, especially the multiple body/content/attachment retrieval variants, even though the split between mailbox and sending operations is logical.
The set provides strong end-to-end coverage for email: message retrieval, search, threads, folders, attachments, mutation, and both single and batch sending. Minor gaps such as no folder creation/deletion or attachment cleanup prevent a perfect score, but agents should not hit dead ends in normal email workflows.
Maintenance
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.
Your agent needs a mailbox of its own — to receive, thread, draft and send, with attachments, without borrowing your personal inbox or your company's SMTP. **What you can ask for** • "Create an inbox for this agent and tell me its address." • "Read the new messages in this thread and draft a reply." • "Send this message with the attachment and wait for the response." • "Search this inbox for everything from that domain." • "Show delivery metrics and the events on this inbox." **How to use it** Point any MCP client at https://mcp.aisa.one/mail/mcp and sign in with OAuth — there is no key to create or paste. 49 tools: create and delete inboxes, list and read messages, raw message bodies, attachments, threads, drafts and draft attachments, send and reply, message search, inbox events, metrics, and list entries — reads and writes. **Why this rather than the source** A real inbox an agent owns, rather than an SMTP credential it borrows from a human. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the contact elsewhere in the catalogue, then write to them from here — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/sales/mcp finds the person to write to.
Related MCP Servers
- AlicenseAqualityDmaintenanceEmail infrastructure for AI agents — create inboxes, send/receive email, search messages, and manage threads via MCP tools.102 npm2MIT
- AlicenseAqualityCmaintenanceMCP server for LobsterMail — gives AI agents email tools. Create inboxes, send and receive email, search messages, and manage webhooks.114 npmMIT
- 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.2971 npm2MIT