AIsa Agent Mail
Server Details
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.
- Status
- Healthy
- Uptime
- 94.0% over 43 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 67 tools
Dozens of tools share literally identical descriptions (e.g. get/patch/delete_agentmail_inbox all say "Retrieve, update, or delete a specific inbox by its ID"), and inbox-scoped variants (get_agentmail_draft vs get_agentmail_inbox_draft, get_agentmail_thread vs get_agentmail_inbox_thread) are indistinguishable from their global counterparts. The hashed OpenAPI-path tools (any_agentmail_apis_v1_agentmail_domains_domain_id_725bd7, patch_any_agentmail_apis_v1_agentmail_api_keys_ap_294dbb) overlap with the cleanly named versions, so an agent cannot reliably choose between them.
A verb_noun convention (get_agentmail_inbox_messages, post_agentmail_inbox_message_reply) is present, but it is mixed with raw generated path names bearing random hex suffixes, double-verb oddities like post_get_agentmail_api_keys, and bare meta-tools (account, search, use). The result is a three-way split between clean names, path-mangled names, and vague one-worders.
67 tools for one email API is far beyond a workable surface, and much of the count is pure duplication (gather/send/delete replicated at inbox scope and global scope, plus path-hash clones). Roughly a third of the list is redundant overlap rather than earned capability.
The email domain is broadly covered: inboxes, messages (send/reply/reply-all/forward/raw), threads, drafts plus draft send, lists/allow-block entries, attachments, domains, API keys, metrics, and account/quota introspection. Minor gaps remain (no attachment deletion or standalone label management), but no core workflow dead-ends.
Available Tools
67 toolsaccountShow account and usageARead-onlyInspect
Who am I, what can I use, how much can I spend: the key, the account balance, the Go-to-Market wallet when one is active, and usage for today, 7 days and 30 days. Free; needs the Authorization header. Call it to verify a new connection or to explain a 402. ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnlyHint/openWorldHint/destructiveHint annotations: the call is free, it requires the Authorization header, and it discloses result semantics ('ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step'). That tells an agent how to interpret partial failure, which annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the agent gets, followed by cost/auth, then call triggers, then result interpretation. No sentence is redundant and none could be dropped without losing 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?
For a zero-parameter read tool with an output schema already present, the description covers the remaining gaps: cost, auth requirement, invocation triggers, and the ok/errors/next_step contract. Nothing an agent needs to call or interpret 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?
The tool takes zero parameters, so the description has nothing parameter-level to compensate for, and the schema is fully covered. A 4 rather than 5 reflects that it adds no input-syntax detail, though none is possible 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 states a concrete resource set (identity/key, account balance, Go-to-Market wallet, usage over 1/7/30 days) rather than restating the name. It is clearly distinguishable from every sibling, which are all Reddit, batch, or search tools. An agent knows exactly what it will learn by calling it.
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?
Explicit triggering conditions are given: 'Call it to verify a new connection or to explain a 402.' That is a strong when-to-use statement. It stops short of 5 because it names no alternative tool or a when-not condition, though the sibling list offers no obvious competing diagnostic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
any_agentmail_apis_v1_agentmail_domains_domain_id_725bd7Get Zone FileCRead-onlyIdempotentInspect
Get Zone File
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | The ID of the domain. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false, and openWorld=true, so the safety profile is covered. The description's one contribution beyond that is the per-request price ($0.012), which is real operational information. It says nothing about what the zone file contains or any retrieval caveats, but the annotation coverage lowers the bar.
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?
Very short and front-loaded, with the tool name first and the pricing note isolated in a marked block. The pricing markup consumes a disproportionate share of the text but is at least clearly delimited and not buried mid-sentence.
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 single-parameter read tool with an output schema and full annotations, the definition is minimally sufficient — an agent can call it correctly with the domain ID. However, the description never clarifies the resource (DNS zone file) enough to distinguish intent from neighboring domain endpoints.
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% — domain_id is documented as 'The ID of the domain.' With only one fully documented parameter, the schema does the work and the baseline of 3 applies. The description adds no formatting or sourcing detail about the ID.
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 is essentially the title repeated: 'Get Zone File' with no expansion of what a zone file is, which domain resource it applies to, or how it differs from the sibling get_any_agentmail_apis_v1_agentmail_domains_domain_id. The only additional text is a pricing boilerplate block, not a purpose statement. This is tautological restatement rather than a description.
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?
There is no indication of when to call this tool, what prerequisites exist (e.g., domain must be verified), or how it relates to alternatives like the domain-get or domains-verify siblings. Nothing is misleading, but nothing guides usage either.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
any_agentmail_apis_v1_agentmail_domains_domain_id_verifyVerify DomainCDestructiveInspect
Verify Domain
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | The ID of the domain. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is already carried by structured data. The description adds nothing behavioral – it never says what gets mutated, whether the call is asynchronous, or whether it can be repeated – and only supplies a pricing note, which is metadata rather than behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and front-loaded with the title, but the only substantive content is inserted pricing boilerplate. Brevity here stems from under-specification rather than disciplined concision.
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 non-idempotent, destructive, open-world operation with no output schema, an agent needs to know what verification does and what state changes it triggers. The description omits all of this, leaving the definition materially incomplete despite the simple one-parameter 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?
There is a single required parameter with 100% schema description coverage, so the schema already documents domain_id. Per the baseline rule, a 3 is appropriate; the description contributes no additional meaning about the 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 is just 'Verify Domain', which restates the tool name and title verbatim. It identifies a verb and resource but does not explain what verification entails (DNS record check, ownership confirmation, async job) or distinguish this from the sibling get/patch/delete domain 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?
There is no when-to-use guidance, no prerequisites (e.g., that DNS records must already be configured), and no mention of alternatives such as get_any_agentmail_apis_v1_agentmail_domains_domain_id for checking status instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_get_schemaGet AIsa tool schemas in one batchARead-onlyIdempotentInspect
Retrieve schemas for 1 to 20 exact tool names from search. Build arguments from successful schemas, then call batch_quote. Do not call batch_use yet. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | Exact tool names returned by search whose complete contracts are needed. Never invent tool names. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| include_documentation | No | Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support. | |
| include_response_schema | No | Return the complete response_schema. Defaults to false. | |
| include_arguments_schema | No | Return the complete arguments_schema. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tools | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is not required to restate it. It adds genuine operational context: the batch_use prohibition, exact-name/prefix requirements, and session reuse semantics. It does not cover failure handling when names are invalid, keeping it below a 5.
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?
Front-loaded with the core action and size limit, and every sentence carries workflow value. The session_id sentence duplicates the schema's own parameter description, which is minor redundancy rather than bloat.
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 read-only batch retrieval tool with an output schema, the description supplies the orchestration context an agent needs (source of names, next steps, session handling) without needing to explain return values. Nothing essential to correct invocation 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 baseline is 3. The description adds real meaning beyond the schema by constraining names to those returned by search and warning against a client prefix such as mcp__aisa__, 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?
States a specific verb and resource ('Retrieve schemas for 1 to 20 exact tool names') and pins the source of those names to search. This clearly separates it from siblings like search (finds tools), batch_quote, and batch_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?
Explicitly sequences the workflow: build arguments from successful schemas, then call batch_quote, and 'Do not call batch_use yet.' This is an explicit when-to-use and when-not-to-use instruction naming the alternative siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_quoteQuote published AIsa tools without executing themARead-onlyIdempotentInspect
Obtain AIsaServices cost quotes for 1 to 20 published tools without executing them. Same input as batch_use: exact tool names and schema-valid arguments. Never falls back to execution. The response reports auto_execute_eligible and auto_execute_threshold_micros_usd. auto_execute_eligible waives only the extra cost-confirmation step and does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Quotes are price observations, not authorization grants. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
| auto_execute_eligible | No | True when the worst-known total of successful USD quotes is at or below auto_execute_threshold_micros_usd. A non-USD successful quote makes the batch ineligible. Present on quote responses. |
| auto_execute_threshold_micros_usd | No | Configured auto-execute threshold in micro-USD. 0 disables automatic execution. Present on quote responses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations by explaining that quotes are price observations rather than authorization grants, and precisely delimiting what auto_execute_eligible does and does not waive (user prohibition, narrower scope, tighter budget). It also guarantees no execution fallback, which is the key behavioral risk for this tool.
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?
Purpose is front-loaded and most sentences carry distinct rules (no fallback, eligibility limits, naming, session reuse). It is on the long side and the argument-shape constraint is stated twice in spirit, but little is truly wasted.
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?
An output schema exists, so return-value documentation isn't required, yet the description still flags the two response fields that matter for a downstream decision. Combined with session and naming guidance, an agent has everything needed to call it 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?
At 67% schema coverage the schema already documents each parameter, so the description earns credit only for added meaning: exact-name rules for 'tool', session_id reuse semantics, and the 1-to-20 argument-shape parallel with batch_use. It doesn't clarify search_id beyond what the schema 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?
States a specific verb and resource ('Obtain AIsaServices cost quotes for 1 to 20 published tools') plus the crucial scope qualifier 'without executing them.' It is immediately distinguishable from the sibling batch_use, which executes rather than quotes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the parallel sibling ('Same input as batch_use') and draws the boundary ('Never falls back to execution'). It also gives operational conditions: use names exactly as search returns them, strip any mcp__aisa__ prefix, and reuse session_id from Search for the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_useExecute published AIsa toolsADestructiveInspect
Billable API calls can incur substantial charges. Never call before a successful batch_quote for the same tools and arguments. Execute only when that quote response reports auto_execute_eligible=true for these calls, or when explicit user authorization covers that cost and risk. auto_execute_eligible waives only the extra cost-confirmation step; it does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Re-quote if tools, arguments, or scope change. Execute 1 to 20 independent published-tool calls; never silently retry. A missing or failed quote is not free. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutability, destructiveness, and open-world behavior. The description adds critical business logic: billable calls, quote dependency, the meaning of auto_execute_eligible (waives only cost confirmation, not user prohibitions), and no silent retry. It doesn't detail rate limits or return format, but with an output schema present, that's acceptable.
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 dense and front-loads the cost warning, but it packs many separate instructions into one block, making it less scannable. Some sentences like 'A missing or failed quote is not free' add value, but the overall flow could be better structured.
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 destructive, open-world annotations and the presence of an output schema, the description covers the essential preconditions and behavioral constraints. It could mention error handling or partial failure behavior, but the core guidance is sufficient 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 coverage is 67%, and the description adds important semantics: tool names must be exact without client prefix, session_id reuse guidance, and 1-20 call limit. It doesn't explain search_id, but the schema description for search_id is already clear enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Execute 1 to 20 independent published-tool calls', and the title matches. It distinguishes itself from batch_quote by requiring a quote first, but doesn't explicitly contrast with the singular 'use' sibling, though that's implied by 'batch'.
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 when-to-use and when-not-to-use conditions: only after a successful batch_quote with auto_execute_eligible=true or explicit user authorization. It also states re-quote conditions and prohibits silent retries, leaving little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agentmail_inboxManage InboxCDestructiveInspect
Retrieve, update, or delete a specific inbox by its ID. Returns inbox details including email, display name, client ID, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond that — it does not say deletion is permanent, what is destroyed, or any auth/rate-limit detail, and instead describes return fields ('email, display name, client ID, timestamps') that read like a retrieve result rather than a destructive delete.
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 core content is two compact sentences with the operation front-loaded, which is efficient. The injected pricing block is required metadata rather than authored prose, so it does not meaningfully hurt structure.
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, non-idempotent delete tool with no output schema, the description should explain consequences and confirm what a delete affects. Instead it describes a retrieve-style return payload, leaving the agent without the information needed to call a destructive operation confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter and 100% schema description coverage, the schema already documents inbox_id fully. The description only restates 'by its ID' and adds no format, validation, or lookup semantics, so the 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 resource (inbox) and verbs, but it bundles three distinct operations — 'Retrieve, update, or delete' — while the tool name and the sibling set (get_agentmail_inbox, patch_agentmail_inbox, delete_agentmail_inbox) show these are separate tools. This makes the stated purpose actively misleading about what this specific 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?
There is no when-to-use guidance, no exclusions, and no routing to the obvious alternatives get_agentmail_inbox and patch_agentmail_inbox that appear as siblings. Usage is only vaguely implied by the operation list, which itself conflates the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agentmail_inbox_draftManage DraftCDestructiveInspect
Retrieve, update, or delete a specific email draft within an inbox by its ID. This endpoint allows you to get draft details, modify draft content and recipients, or remove the draft entirely.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | ID of draft. | |
| inbox_id | Yes | The ID of the inbox. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true. The description only echoes that the draft can be 'removed entirely,' adding little; it says nothing about whether deletion is permanent, whether auth/permissions are needed, or side effects. The claim that the tool also retrieves and updates is misleading context for a delete endpoint, though it does not strictly contradict readOnlyHint=false.
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?
Reasonably short, but the second sentence largely restates the first ('get draft details, modify draft content... or remove the draft entirely'), adding no new information. The injected pricing block is boilerplate noise rather than authored 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 destructive mutation with no output schema, the description should clarify permanence, scope of destruction, and prerequisites. Instead it dilutes the tool's identity by describing three operations, leaving an agent uncertain what this endpoint actually does.
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% for both required parameters (draft_id, inbox_id), so the schema already carries their meaning. The description adds no syntax, format, or source-of-ID detail beyond what the schema provides, making the baseline 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 names a specific resource (an email draft within an inbox, by ID) but describes three different operations — retrieve, update, delete — while the tool name is 'delete_agentmail_inbox_draft' and siblings get_agentmail_inbox_draft and patch_agentmail_inbox_draft each cover one of those verbs. This multi-verb framing blurs rather than sharpens the tool's actual scope for an agent choosing 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?
No when-to-use guidance is given, and the description compounds the problem by claiming this delete tool also retrieves and updates drafts. With dedicated get_ and patch_ siblings present, the description provides no routing information and actively blurs the alternative-selection decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agentmail_inbox_list_entryGet List EntryCDestructiveInspect
Retrieve details of a specific list entry, such as an email address or domain, within an inbox's list based on direction and type.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of list entry. | |
| entry | Yes | Email address or domain. | |
| inbox_id | Yes | The ID of the inbox. | |
| direction | Yes | Direction of list entry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=true (a destructive write), while the description claims the tool only 'retrieves details' (a read). This is a direct contradiction of the safety profile, so the description actively misleads the agent about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single substantive sentence is front-loaded and reasonably tight, but the injected pricing block ('Published reference price: $0.012 USD...') consumes a large share of the text without helping the agent decide or invoke the tool.
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 four required parameters, no output schema, and a destructive annotation profile, the description should clarify the operation's effect and any return shape. Instead it describes a read, omits the deletion semantics implied by the name and annotations, and leaves the agent unable to call this safely.
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%, with all four parameters (type, entry, inbox_id, direction) documented and two enums enumerated. The description adds only a loose gloss ('email address or domain', 'based on direction and type') that the schema already conveys, so 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 says 'Retrieve details of a specific list entry', which is a clear verb+resource, but the tool is named delete_agentmail_inbox_list_entry. An agent cannot tell whether this reads or deletes, and the sibling get_agentmail_inbox_list_entry already appears to cover retrieval, so the stated purpose is at best ambiguous and at worst misleading.
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?
There is no when-to-use or when-not-to-use guidance, no mention of the near-identical sibling get_agentmail_inbox_list_entry or delete_agentmail_list_entry, and no indication of prerequisites. The agent is left to infer everything from the name/description conflict.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agentmail_inbox_messageGet Inbox MessageDDestructiveInspect
Retrieve detailed information about a specific message within an inbox, including sender, recipients, content, labels, attachments, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. | |
| message_id | Yes | ID of message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, but the description presents a harmless retrieval operation. It omits deletion side effects, irreversibility, required permissions, and any warning that the message may be removed.
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 main sentence is concise and front-loaded with the resource and returned fields. The embedded pricing boilerplate is irrelevant to invocation, but the description remains structurally efficient overall.
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 operation with no output schema and annotations indicating deletion, the description should carry critical context such as deletion warnings, irreversibility, and permissions. Instead it describes retrieval, leaving the agent without the information needed to call the tool safely or 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%, so inbox_id and message_id are fully documented in the input schema. The description adds return-content context but no additional parameter syntax or semantics 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 says to retrieve message details, but the tool name is delete_agentmail_inbox_message and a sibling get_agentmail_inbox_message exists. This gives an agent the wrong operation verb, making the purpose misleading despite mentioning sender, recipients, content, labels, attachments, and timestamps.
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?
No when-to-use guidance, prerequisites, or alternatives are provided. It does not distinguish this tool from get_agentmail_inbox_message or explain when a message should be deleted versus retrieved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agentmail_inbox_threadManage Inbox ThreadCDestructiveInspect
Retrieve, update, or delete a specific email thread within an inbox, including details like messages, labels, senders, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. | |
| thread_id | Yes | ID of thread. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered by structured data. What the description adds is actively misleading: it advertises retrieval of 'messages, labels, senders, and timestamps', which reads as a read operation, and it never states that deletion is permanent, whether it cascades to contained messages, or what authorization is required.
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 core sentence is short and front-loaded, but it is padded with an unnecessary list of thread contents and prefixed by a verb set that does not match the tool name. The appended pricing block is injected boilerplate that consumes attention without aiding tool selection.
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, non-idempotent operation with no output schema, the description should state permanence, cascade behavior, and anything the caller gets back. Instead it describes thread contents as if the tool returned them, leaving the destructive semantics carried almost entirely by the 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% (inbox_id and thread_id are both documented in the schema), so the baseline is 3. The description adds no format, constraint, or sourcing detail about the two IDs 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 names a concrete resource ('a specific email thread within an inbox') but opens with three verbs ('Retrieve, update, or delete') for a tool whose name is delete_agentmail_inbox_thread and whose title is the generic 'Manage Inbox Thread'. An agent cannot determine from the text whether this call destroys a thread or merely reads/updates it, and the multi-verb framing blurs it against the get_/patch_ 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?
There is no guidance on when to use this versus get_agentmail_inbox_thread, patch_agentmail_inbox_thread, or delete_agentmail_thread. The sibling list shows a full get/patch/delete family, and the description offers nothing to route between them. Usage must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agentmail_list_entryManage List EntryCDestructiveInspect
Retrieve or delete a specific email address or domain entry from a list based on its direction and type.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of list entry. | |
| entry | Yes | Email address or domain. | |
| direction | Yes | Direction of list entry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, and idempotentHint=false. The description adds no further behavioral context such as permanence, required permissions, or irreversibility, and its 'Retrieve' wording blurs the destructive profile already provided by 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 main purpose is front-loaded in a single sentence, with no unnecessary exposition. The included pricing HTML block is extraneous to tool selection and invocation, but it is brief.
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 fully covers the three required parameters and annotations carry the safety profile, so the basics are covered. However, for a destructive delete tool with close read/delete siblings, the description should clarify that it deletes rather than retrieves and when to choose it over get_agentmail_list_entry.
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 entry, direction, and type. The description mirrors these fields but adds no format, constraint, or example information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (email address or domain entry in a list) and the parameter dimensions direction and type, but the verb phrase 'Retrieve or delete' conflates two operations and does not distinguish this tool from the sibling get_agentmail_list_entry. Sibling selection is therefore ambiguous.
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 no guidance on when to use this tool versus alternatives such as get_agentmail_list_entry, and no prerequisites or when-not-to-use conditions are stated. The 'Retrieve or delete' wording could even misroute retrieval calls to this deletion-oriented tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agentmail_threadManage Email ThreadCDestructiveInspect
Retrieve, update, or delete an email thread by its ID. Supports fetching thread details, modifying labels, and deleting the thread permanently or moving it to trash.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ID of thread. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description's only added value is the 'permanently or moving it to trash' distinction, but no schema parameter supports that choice, so it is misleading rather than informative, and the claim to 'retrieve' and 'update' conflicts with a tool the annotations mark as destructive-only.
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 operational sentence is compact and front-loaded, but a quarter of the text is injected pricing boilerplate that does not help an agent invoke the tool. Space is also spent enumerating three operations that the tool name contradicts.
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, non-idempotent, single-parameter tool with no output schema, the description should at minimum explain that deletion is irreversible and that no trash-mode parameter exists. Instead it advertises modes that cannot be selected and mixes in read/update semantics, leaving the agent with an inaccurate picture of the tool's actual surface.
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% for the single thread_id parameter, so the schema carries the full burden; baseline 3 applies. The description adds no syntax or format detail for thread_id and instead describes behaviors (trash vs permanent) that have no corresponding 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 names a resource (email thread) and specific operations, but it conflates three distinct operations — retrieve, update, and delete — into a tool whose name and title (delete_agentmail_thread) promise only deletion. Sibling tools get_agentmail_thread and patch_agentmail_thread already exist for the other two verbs, so this bundling actively muddies tool selection rather than clarifying it.
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?
There is no guidance on when to choose this tool over get_agentmail_thread or patch_agentmail_thread, despite those siblings being present. The description also hints at a 'permanently or moving it to trash' choice, but offers no condition for picking either, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_any_agentmail_apis_v1_agentmail_api_keys_a_3ff578Delete API KeyCDestructiveInspect
Delete API Key
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key_id | Yes | ID of api key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false and openWorldHint=true, so the risk profile is covered without description help. The description contributes only the published per-request price ($0.012), a genuine behavioral fact not present in annotations, but says nothing about irreversibility, revoking effects on existing integrations, or confirmation requirements.
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 text is short and not padded with redundant prose, and the pricing note is clearly delimited. However, the only substantive content is the pricing boilerplate; relative to the tool's purpose the definition is under-specified rather than concise-and-complete.
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, non-idempotent delete with no output schema, an agent would benefit from knowing what happens on success (empty body? 204?), whether deletion cascades to related inboxes/domains, and whether the key is recoverable. None of this is present, so the definition is materially incomplete despite annotation coverage.
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?
There is a single parameter (api_key_id) with 100% schema description coverage, so the schema documents it fully. The description adds no meaning such as where to obtain the key ID or whether it accepts a key value versus an identifier, which is the baseline for high-coverage 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?
The description body is literally the title 'Delete API Key' — a tautology that restates the tool name rather than describing behavior. It does convey a verb+resource (delete an API key), but adds no scope, target system detail, or differentiation from the many other delete_* 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?
There is no when-to-use, when-not-to-use, or alternative guidance at all. Nothing tells the agent how this differs from sibling deletes such as delete_any_agentmail_apis_v1_agentmail_domains_domain_id or delete_agentmail_inbox.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_any_agentmail_apis_v1_agentmail_domains_domain_idManage DomainCDestructiveInspect
Retrieve, update, or delete a domain by its ID, including details such as verification status, DNS records, and notification settings.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | The ID of the domain. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is partly conveyed. However, for a destructive irreversible operation the description gives no warning about permanence, what collateral data is removed, or any confirmation/auth requirements, and it emphasizes read-only fields 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?
The core content is a single compact sentence, which is appropriately sized, but it wastes its slots enumerating operations the tool likely does not perform (retrieve/update) instead of front-loading the destructive action. The embedded pricing note is metadata, not descriptive text.
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 tool with no output schema and no annotations covering irreversibility, the description should state consequences and any prerequisites. Instead it describes verification status, DNS records, and notification settings — fields associated with the retrieval siblings — leaving the actual delete behavior unspecified.
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?
Only one parameter (domain_id) with 100% schema description coverage, so the schema fully documents it. The description adds no format, scope, or sourcing detail beyond the schema, which is the baseline expectation at full 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 name says delete, but the description claims the tool can "Retrieve, update, or delete" — conflating three distinct siblings (get_any_agentmail_apis_v1_agentmail_domains_domain_id, patch_..., and this delete). An agent cannot tell from the description what this specific tool actually does. The resource is clear but the verb is muddled.
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?
No guidance on when to use this versus the get/patch domain siblings, and no warning about the conditions under which a domain should be deleted. The reader is left to infer that deletion is the applicable path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_any_agentmail_apis_v1_agentmail_inboxes_in_4ef7afInboxes - Delete API KeyCDestructiveInspect
Delete API Key
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. | |
| api_key_id | Yes | ID of api key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false and openWorldHint=true, so the destructive/non-idempotent profile is covered. The description adds nothing behavioral beyond that – it does not say the key is permanently revoked, whether other resources are affected, or what auth is required; the only extra content is a cost notice.
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 text is short and front-loaded, which is good, but the second half is vendor pricing boilerplate that occupies space a usage or scoping hint could have filled. It is concise without being informative.
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, non-idempotent delete with two required identifiers and no output schema, the description leaves key questions unanswered: whether deletion is permanent, what happens to the inbox after the key is removed, and how this differs from the other API-key delete tool. Annotations cover the safety flag but not the operational semantics.
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 both required parameters (inbox_id, api_key_id) are documented in the schema, so the baseline of 3 applies. The description adds no additional meaning about how the two identifiers relate.
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+resource ("Delete API Key"), so the general action is recoverable, but it is essentially a restatement of the title with the "Inboxes" scope prefix stripped off. It does not distinguish this tool from the sibling delete_any_agentmail_apis_v1_agentmail_api_keys_a_3ff578 or explain the inbox-scoped API key model.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives, despite a large set of delete siblings that an agent must choose between. The pricing note is the only additional sentence and gives no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_draftGet DraftCRead-onlyIdempotentInspect
Get Draft
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | ID of draft. |
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, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds no operational context, only a price note; it says nothing about auth requirements, error behavior, or what the draft object contains.
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?
It is short, but the only non-title content is a pricing disclaimer that does not help an agent select or invoke the tool. This is under-specification rather than genuine conciseness; the text present does not earn 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?
An output schema exists, so return values need not be explained, but the description fails to establish scope (top-level vs inbox-scoped draft) among many near-identical siblings. For a getter in a crowded namespace, that is a real 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?
There is one parameter and schema description coverage is 100%, so the schema already documents draft_id fully. The description adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is only the title restated ('Get Draft') plus a pricing footnote; it adds no specific verb, resource detail, or scope beyond the tool name. It does not distinguish this top-level 'get draft' from siblings such as get_agentmail_inbox_draft or get_agentmail_drafts. This is effectively a tautology.
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?
No when-to-use guidance, no conditions, and no reference to alternatives is given. With a large family of sibling getters (get_agentmail_inbox_draft, get_agentmail_drafts, get_agentmail_draft_attachment), the absence of routing guidance leaves the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_draft_attachmentGet AttachmentCRead-onlyIdempotentInspect
Get Attachment
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | ID of draft. | |
| attachment_id | Yes | ID of attachment. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds only per-request cost information (useful but peripheral) and says nothing about response behavior, size limits, or auth scope beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the tool name, but the bulk of the body is pricing markup rather than functional content, and the pricing block arguably belongs in metadata rather than the description. There is no wasted prose, but also almost no substance.
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?
An output schema exists, so return values need not be explained, but for a tool surrounded by near-identical attachment getters the description provides no disambiguation of which attachment source it targets. Missing scope/routing detail leaves the agent unable to place it confidently among siblings.
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 draft_id and attachment_id are documented in the schema itself; per the rubric this yields a baseline of 3. The description contributes no additional parameter meaning (e.g., ID formats or where draft_id comes from).
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 is only the header 'Get Attachment' plus pricing boilerplate, which essentially restates the tool name/title. It does not specify what kind of attachment is fetched (draft vs message vs thread) or what the returned payload is, so an agent cannot distinguish it from the many sibling attachment getters.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_agentmail_inbox_draft_attachment or get_agentmail_thread_attachment. The only added text is pricing, which does not help an agent decide when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_draftsList DraftsCRead-onlyIdempotentInspect
List Drafts
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Timestamp after which to filter by. | |
| limit | No | Limit of number of items returned. | |
| before | No | Timestamp before which to filter by. | |
| labels | No | Labels to filter by. | |
| ascending | No | Sort in ascending temporal order. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered elsewhere. The description adds nothing beyond a pricing note — no mention of pagination behavior, filtering scope, or what the listing returns, even though those behaviors matter for a paginated list endpoint.
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 just a duplicated title plus an HTML-commented pricing block, which is noise for an agent and not front-loaded useful information. It is short but wastes what little space it has.
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 six-parameter paginated list tool surrounded by many similar draft/sibling getters, the description should at least state scope (all drafts vs. inbox-scoped drafts) and that results are paginated. The output schema exists, but the description fails to disambiguate from siblings, leaving the agent under-informed for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (after, before, limit, labels, ascending, page_token) are already documented in the schema. The description adds no parameter meaning beyond that, which meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is simply 'List Drafts', which restates the title verbatim and provides no distinguishing detail from the closely related siblings get_agentmail_inbox_drafts, get_agentmail_draft, and get_agentmail_inbox_draft. The only added content is a pricing banner, which does not clarify the tool's purpose.
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?
There is no guidance on when to use this tool versus get_agentmail_inbox_drafts or the singular draft getters. An agent has no basis for choosing among the many list/get draft siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inboxManage InboxCRead-onlyIdempotentInspect
Retrieve, update, or delete a specific inbox by its ID. Returns inbox details including email, display name, client ID, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly says the tool can 'update, or delete' an inbox, but annotations declare readOnlyHint=true and destructiveHint=false, and dedicated patch_agentmail_inbox / delete_agentmail_inbox siblings exist. This is a direct contradiction of the safety profile and could lead an agent to expect mutation capabilities that do not exist.
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 core is two short sentences, but the first sentence carries the misleading update/delete claim and a block of pricing boilerplate is injected mid-description. Structure is acceptable but not clean.
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?
An output schema exists, so return values needn't be explained, yet the description restates them and never clarifies the read-only nature of the operation. The contradiction with annotations leaves an agent with an incomplete and inaccurate picture of the tool's behavior.
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% for the single inbox_id parameter, so the schema already documents it fully. The description's 'by its ID' phrasing adds no meaning beyond the schema. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The core action is stated with a specific verb and resource (retrieve a specific inbox by its ID), which is discernible. However, the description claims it can also 'update, or delete' an inbox, which muddies the purpose and conflicts with the read-only nature of the tool. It also fails to differentiate from siblings like get_agentmail_inboxes or the duplicate get_any_agentmail_apis_v1_agentmail_inboxes_inbox_81bd1e.
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?
No guidance on when to use this tool versus alternatives. With siblings such as get_agentmail_inboxes (list) and the update/delete variants, an agent gets no routing signal. The only implied usage is the 'by its ID' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_draftManage DraftCRead-onlyIdempotentInspect
Retrieve, update, or delete a specific email draft within an inbox by its ID. This endpoint allows you to get draft details, modify draft content and recipients, or remove the draft entirely.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | ID of draft. | |
| inbox_id | Yes | The ID of the inbox. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the tool can 'modify draft content and recipients' and 'remove the draft entirely', while annotations declare readOnlyHint=true and destructiveHint=false. This is a direct contradiction of the safety profile an agent relies on.
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?
Front-loaded with the resource and action, then a clarifying sentence; reasonably tight. The injected pricing boilerplate and the three-verb sprawl are minor waste but the core is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, but the description still misrepresents the tool's mutability and offers no routing to the real update/delete siblings. For a seemingly simple retrieval tool, the definition leaves the agent with a wrong mental model.
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 draft_id and inbox_id are already documented in the schema. The description adds no syntax, format, or constraint detail beyond that, matching the baseline for schema-covered 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 resource (email draft in an inbox) and identifier (draft ID), which is clear enough against siblings like get_agentmail_draft. However, it bundles three operations (retrieve/update/delete) into one tool whose name and annotations indicate a read-only GET, so the stated purpose is partly inaccurate.
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?
No guidance on when to use this versus the many siblings that actually cover the claimed operations (patch_agentmail_inbox_draft, delete_agentmail_inbox_draft, get_agentmail_draft). Nothing indicates the read-only scope or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_draft_attachmentInboxes - Get AttachmentCRead-onlyIdempotentInspect
Get Attachment
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | ID of draft. | |
| inbox_id | Yes | The ID of the inbox. | |
| attachment_id | Yes | ID of attachment. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered structurally. The description adds nothing behavioral beyond a pricing note, which is not relevant to invoking the tool correctly.
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?
It is short but not substantive: the text is effectively a title repeat plus a pricing/HTML-comment block that does not help an agent select or call the tool. The signal-to-noise ratio is poor even at this length.
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?
An output schema exists, so return values need not be explained, and annotations cover safety. But for a heavily-populated sibling family of attachment getters, the description provides no differentiation, leaving the agent to infer scope from the name alone.
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 three IDs (attachment_id, draft_id, inbox_id) are documented in the schema. Baseline 3 applies; the description contributes no additional meaning about the 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?
The description is just "Get Attachment," which restates the title "Inboxes - Get Attachment" without adding a verb-resource-scope statement an agent can use. It does not distinguish this tool from siblings like get_agentmail_draft_attachment or get_agentmail_inbox_message_attachment.
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?
There is no when-to-use guidance, no mention of alternatives, and no prerequisite/context statement. The only usable signal is the naming convention itself; the description offers nothing about when this attachment-getter applies versus the other attachment getters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_draftsList DraftsARead-onlyIdempotentInspect
Retrieve a list of email drafts from the specified inbox, with optional filters and pagination support.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Timestamp after which to filter by. | |
| limit | No | Limit of number of items returned. | |
| before | No | Timestamp before which to filter by. | |
| labels | No | Labels to filter by. | |
| inbox_id | Yes | The ID of the inbox. | |
| ascending | No | Sort in ascending temporal order. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 safe-read profile is covered by structured data. The description adds only that filtering and pagination are supported; it says nothing about auth scope, result caps, or how pagination tokens behave. The appended pricing line is boilerplate billing metadata, not behavioral disclosure.
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?
One front-loaded sentence carrying the core information with no wasted phrasing. The trailing pricing comment block is extraneous to tool selection, though it appears to be injected metadata rather than authored description text.
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, return values need not be explained, and full schema coverage handles parameter detail; annotations cover safety and idempotency. The remaining gap is only the absence of sibling-routing guidance, which is minor for a straightforward list endpoint.
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 every parameter (after, before, labels, limit, ascending, page_token, inbox_id) is already documented in the schema. The description generalizes about filters and pagination but adds no field-level meaning beyond it, matching the baseline-3 expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve a list of email drafts') and scopes it to 'the specified inbox,' which matches the required inbox_id. It does not, however, explicitly distinguish itself from the sibling get_agentmail_drafts (the non-inbox-scoped list) or get_agentmail_inbox_draft (single draft), so the differentiation is left to the name.
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?
Mentioning 'optional filters and pagination support' implies the intended listing/filtering use case, but the description never says when to pick this over get_agentmail_drafts, get_agentmail_inbox_draft, or the thread/message list siblings, nor does it state any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inboxesList And Create InboxesCRead-onlyIdempotentInspect
Retrieve a list of inboxes with pagination support or create a new inbox with optional custom username, domain, and display name.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit of number of items returned. | |
| ascending | No | Sort in ascending temporal order. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description advertises a create (write) capability while the annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. This directly contradicts the structured safety profile. Additionally, it discloses nothing about pagination behavior or rate limits beyond the boilerplate pricing note.
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 core is a single sentence, but it merges two unrelated operations into one clause, and the injected aisa-pricing HTML block adds non-selection-relevant clutter. The payload is not front-loaded around a single clear capability.
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?
Although an output schema exists (so return structure need not be described), the definition is incomplete: it leaves the create-vs-list ambiguity unresolved, omits create parameters the schema does not have, and contradicts its own annotations. For a tool surrounded by many near-named siblings, this is insufficient 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 coverage is 100% and the three actual parameters (limit, ascending, page_token) are self-documented. The description instead names 'custom username, domain, and display name' as inputs, none of which exist in the schema, so it misleads rather than adds meaning about the real 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?
The leading clause states a clear verb+resource ('Retrieve a list of inboxes with pagination support'), which matches the tool name and the read-oriented siblings. However, it then appends 'or create a new inbox', conflating two distinct operations and blurring the tool's identity against siblings like get_agentmail_inbox (singular) and post_agentmail_inbox (the real create path). An agent cannot cleanly tell what this tool does from the description alone.
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 mentions pagination support but gives no conditions for choosing this tool over get_agentmail_inbox, get_agentmail_inbox_messages, or the dedicated create endpoints. There is no when-to-use, when-not-to-use, or alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_eventsInboxes - List Inbox EventsCRead-onlyIdempotentInspect
List Inbox Events
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit of number of items returned. | |
| inbox_id | Yes | The ID of the inbox. | |
| ascending | No | Sort in ascending temporal order. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The only added behavior is the pricing note ($0.012 per successful request), which is genuinely useful cost context but is gateway boilerplate rather than tool-specific behavior; nothing is said about pagination or result traversal despite page_token/limit parameters being present.
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?
Brevity here reflects under-specification rather than economy. The single meaningful line duplicates the title and the remaining content is an injected HTML-comment pricing block, so the space that should carry purpose and usage is spent on boilerplate.
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?
An output schema and rich annotations relieve the description of explaining return values and safety, but for a four-parameter listing tool with dozens of near-identical siblings, the description supplies no notion of what an inbox event is or when this call is the right one. It is not sufficient for correct tool selection.
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 limit, inbox_id, ascending and page_token are all documented in the schema itself; the baseline of 3 applies. The description adds no parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description text is the tool title verbatim ('List Inbox Events'), which is a restatement of the name rather than an explanation of scope. It does not say what an 'event' is or how this differs from the many sibling readers (get_agentmail_inbox_messages, get_agentmail_inbox_threads, get_agentmail_inbox_drafts), so an agent cannot discriminate it from structured fields alone.
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?
No when-to-use guidance, no exclusions, no named alternatives, and no prerequisites are given. With over sixty sibling tools in this namespace, the absence of any routing signal is a serious gap rather than a minor omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_list_entriesList Or Create Inbox List EntryCRead-onlyIdempotentInspect
Retrieve or add entries to a specific inbox list based on direction and type. Supports listing entries with pagination and creating new entries with optional reasons.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of list entry. | |
| limit | No | Limit of number of items returned. | |
| inbox_id | Yes | The ID of the inbox. | |
| direction | Yes | Direction of list entry. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the tool 'add[s]' and 'creat[es] new entries', which is a write operation, while annotations declare readOnlyHint=true and destructiveHint=false. This is a direct contradiction of the structured safety profile, so the description actively misleads the agent about the tool's mutating behavior.
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 no redundant padding; the purpose leads and the capability detail follows. The only bloat is the injected pricing boilerplate, which is not part of the author's prose.
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?
Although an output schema exists and relieves the description of explaining returns, the definition is incomplete and misleading for a tool it presents as both a reader and a creator: it contradicts the read-only annotation and references a 'reason' concept with no corresponding parameter. An agent cannot reliably determine whether calling it mutates state.
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 type, limit, inbox_id, direction, and page_token; baseline is 3. The description adds only that pagination is supported, and its mention of 'optional reasons' does not map to any parameter in the schema, adding confusion rather than meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource ('Retrieve or add entries to a specific inbox list') scoped by direction and type, but it conflates two distinct operations (read and write) in a tool whose name is 'get_...' while its title is 'List Or Create'. It does not distinguish this tool from siblings like get_agentmail_list_entries or post_agentmail_inbox_list_entry, leaving the agent unsure what the tool actually is.
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?
There is no when-to-use or when-not-to-use guidance and no alternative sibling is named, despite the environment containing get_agentmail_inbox_list_entry, get_agentmail_list_entries, and post_agentmail_inbox_list_entry. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_list_entryGet List EntryARead-onlyIdempotentInspect
Retrieve details of a specific list entry, such as an email address or domain, within an inbox's list based on direction and type.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of list entry. | |
| entry | Yes | Email address or domain. | |
| inbox_id | Yes | The ID of the inbox. | |
| direction | Yes | Direction of list entry. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already fully declare the read-only, idempotent, non-destructive, open-world profile, so the safety burden is off the description. The description adds only the qualifier that entries are email addresses or domains and that lookups are keyed on direction and type; it says nothing about failure modes (missing entry) or result shape.
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 functional sentence is single, front-loaded, and free of padding. The appended pricing boilerplate is injected infrastructure rather than authorial prose, so it does not undermine the concise core.
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 rich schema (100% coverage), four enums-annotated required params, full annotations, and an output schema that documents return values, the one-sentence description is sufficient for an agent to call this correctly. Only the sibling-disambiguation for the plural list tool is left unstated.
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 all four parameters (type, entry, inbox_id, direction) are documented in the schema, including enum values. The description only loosely echoes 'direction and type' and 'email address or domain', adding no format or syntax beyond the schema, so 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?
Specific verb 'Retrieve details of' plus a specific resource 'a specific list entry ... within an inbox's list', and it clarifies the entry is an email address or domain filtered by direction and type. It distinguishes the singular lookup from the plural sibling get_agentmail_inbox_list_entries only implicitly ('a specific list entry'), so differentiation is present but not sharp.
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 usage (fetch one known entry, scoped to an inbox, identified by direction and type) but never says when to choose it over get_agentmail_inbox_list_entries, get_agentmail_list_entry, or the inbox-scoped variants. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_messageGet Inbox MessageBRead-onlyIdempotentInspect
Retrieve detailed information about a specific message within an inbox, including sender, recipients, content, labels, attachments, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. | |
| message_id | Yes | ID of message. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully carried by structured data. The description adds only the field inventory of the response, which is arguably redundant given an output schema exists, and says nothing about auth requirements, error cases (missing inbox/message), or rate limits. Adds some context but not much beyond structured fields.
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 core purpose is a single front-loaded sentence with no waste. However, the appended pricing boilerplate block is tool-agnostic metadata that does not earn a place in a description intended to drive invocation, diluting the structure.
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 two-parameter read tool with full schema coverage, complete annotations, and an output schema, the description covers what an agent needs to call it correctly. Return-value detail is present but redundant since the output schema handles it; the only real gap is sibling disambiguation.
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 both parameters (inbox_id, message_id) are documented in the schema, so the baseline is 3. The description does not add any format, ID-source, or constraint detail 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 gives a specific verb ("Retrieve detailed information") and a precise resource ("a specific message within an inbox"), and enumerates the returned fields (sender, recipients, content, labels, attachments, timestamps). It distinguishes adequately from the list sibling get_agentmail_inbox_messages by saying "a specific message," but never explicitly differentiates from get_agentmail_inbox_message_raw or get_agentmail_inbox_message_attachment.
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?
There is no when-to-use guidance and no alternatives named, even though the sibling set contains get_agentmail_inbox_message_raw, get_agentmail_inbox_message_attachment, and get_agentmail_inbox_thread. The purpose implies "fetch one message by ID," but nothing routes the agent among these near-identical retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_message_attachmentInboxes - Get AttachmentCRead-onlyIdempotentInspect
Get Attachment
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. | |
| message_id | Yes | ID of message. | |
| attachment_id | Yes | ID of attachment. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear without description help. The description does add the published request price, which annotations do not cover, but it says nothing about authentication, rate limits, or response behavior.
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 short and front-loads the only substantive phrase, "Get Attachment." However, it is under-specified for a tool with this many siblings, and the embedded pricing boilerplate is not central to invoking the tool correctly.
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 is fully documented, an output schema exists, and annotations cover the read-only/idempotent behavior. Still, the description itself does not clarify the inbox-message scope or distinguish this attachment getter from sibling attachment tools, leaving context to be inferred from the tool name.
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 three required parameters (inbox_id, message_id, attachment_id) are each described in the schema. The description adds no parameter meaning beyond what the schema already provides, 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 is essentially "Get Attachment," which restates the title "Inboxes - Get Attachment" rather than stating a distinct purpose. It does not differentiate this inbox-message attachment getter from sibling tools such as get_agentmail_draft_attachment, get_agentmail_inbox_draft_attachment, or get_agentmail_inbox_thread_attachment.
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?
No guidance is given about when to use this tool versus the many adjacent attachment and message retrieval tools. The only extra text is a pricing note, which does not help an agent choose between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_message_rawInboxes - Get Raw MessageCRead-onlyIdempotentInspect
Get Raw Message
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. | |
| message_id | Yes | ID of message. |
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, non-destructive, and openWorld, so the safety profile is covered. The description's only added behavioral fact is the $0.012 per-request price, which is real but thin and not enough to explain what 'raw' output entails (e.g., raw MIME vs parsed fields).
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?
It is short and front-loaded, but the pricing comment block is boilerplate that occupies most of the body without helping the agent invoke the tool. Nothing is bloated, yet nothing earns its place either.
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?
An output schema exists so return values need not be described, but the core ambiguity — how this differs from get_agentmail_inbox_message and what 'raw' means — is left entirely unresolved for a tool with many near-identical siblings.
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 both required parameters (inbox_id, message_id) are documented in the schema itself. The description adds no meaning beyond that, so the 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 is effectively the title restated: 'Get Raw Message' with no expansion of what 'raw' means or what resource is actually fetched. With dozens of sibling getters (get_agentmail_inbox_message, get_agentmail_inbox_message_attachment, etc.), the agent gets no basis for distinguishing this tool from the normal message getter.
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?
There is no when-to-use guidance, no mention of the alternative get_agentmail_inbox_message, and no note about when the raw representation is preferable. The only additional text is a pricing boilerplate block, which does not help selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_messagesInboxes - List MessagesCRead-onlyIdempotentInspect
List Messages
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Filter to messages whose recipients (to, cc, or bcc) contain this value (substring match). Repeatable; all values must match. | |
| from | No | Filter to messages whose sender contains this value (substring match). Repeatable; all values must match. | |
| after | No | Timestamp after which to filter by. | |
| limit | No | Limit of number of items returned. | |
| before | No | Timestamp before which to filter by. | |
| labels | No | Labels to filter by. | |
| subject | No | Filter to messages whose subject contains this value (substring match). Repeatable; all values must match. | |
| inbox_id | Yes | The ID of the inbox. | |
| ascending | No | Sort in ascending temporal order. | |
| page_token | No | Page token for pagination. | |
| include_spam | No | Include spam in results. | |
| include_trash | No | Include trash in results. | |
| include_blocked | No | Include blocked in results. | |
| include_unauthenticated | No | Include unauthenticated in results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing behavioral about the tool itself — no pagination behavior, no default filtering (e.g., whether spam/trash are excluded by default), no result ordering — only a billing note.
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?
It is short, but shortness here reflects under-specification rather than efficiency. The embedded pricing HTML comment block is boilerplate noise that consumes most of the text without describing the tool.
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 14-parameter filtered list tool with rich pagination and include_* semantics, the description supplies none of the context an agent needs about defaults or scope, relying entirely on the schema and annotations. The existence of an output schema excuses omitting return values, but not omitting usage and default-filtering context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 14 parameters, so the schema fully documents filters such as to/from/subject, date bounds, and the include_* flags. The description adds no additional meaning beyond the schema, which is the expected baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List Messages" merely restates the tool title ("Inboxes - List Messages") without stating scope, what an inbox message is, or how it differs from siblings like get_agentmail_inbox_threads or get_agentmail_inbox_message. It is a tautological restatement rather than a description of 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?
There is no when-to-use guidance, no condition for choosing this over thread- or message-level siblings, and no mention of prerequisites. The only additional sentence is a pricing disclaimer, which does not help an agent decide whether to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_metricsInboxes - Query MetricsCRead-onlyIdempotentInspect
Query Metrics
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End timestamp for the query. | |
| limit | No | Limit on number of buckets to return. | |
| start | No | Start timestamp for the query. | |
| period | No | Period in number of seconds for the query. | |
| inbox_id | Yes | The ID of the inbox. | |
| descending | No | Sort in descending order. | |
| event_types | No | List of metric event types to query. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds only a per-request price note, which is useful cost context but does not explain metrics computation, event filtering, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely terse ('Query Metrics') and largely consumed by pricing boilerplate. For a 7-parameter inbox metrics endpoint, this is under-specification rather than appropriately concise, and nothing useful about the operation is front-loaded.
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 has 7 parameters, many AgentMail siblings, and an output schema. The description does not state the inbox-specific scope or distinguish it from global metrics, leaving sibling selection and operational intent unclear despite rich 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 all 7 parameters are already documented in the input schema. The description adds no parameter meaning, which is the expected baseline when the schema carries the full burden.
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 is only 'Query Metrics', which restates the title and tool name rather than specifying what metrics are queried, for which inbox, or how it differs from sibling tools like get_agentmail_metrics. It is a tautology rather than a clear verb+resource description.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_agentmail_metrics or get_agentmail_inbox_events. The agent receives no routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_threadManage Inbox ThreadCRead-onlyIdempotentInspect
Retrieve, update, or delete a specific email thread within an inbox, including details like messages, labels, senders, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit of number of items returned. | |
| inbox_id | Yes | The ID of the inbox. | |
| thread_id | Yes | ID of thread. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims 'update, or delete' while annotations declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. This directly contradicts the declared safety profile and could lead an agent to believe it is invoking a mutating or destructive 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?
A single front-loaded sentence that opens with the action and resource, followed by the injected pricing boilerplate. The prose itself is tight, though the misleading verb list is a content flaw rather than a length problem.
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?
An output schema exists so return values need not be explained, and the schema fully covers inputs. The remaining gap is that the description fails to resolve the read-vs-write ambiguity created by its own wording against the 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 all four parameters (limit, inbox_id, thread_id, page_token) are documented in the schema. The description adds no extra meaning such as pagination semantics or thread_id format, so the 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?
Names a specific resource (a specific email thread within an inbox) and enumerates the data it surfaces (messages, labels, senders, timestamps). However, the verb set 'Retrieve, update, or delete' is over-broad and wrong for a tool whose name and annotations indicate a read, so the purpose is muddled rather than crisp.
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?
No when-to-use guidance and no routing to alternatives, despite many plausible siblings such as get_agentmail_thread, get_agentmail_inbox_threads, patch_agentmail_inbox_thread, and delete_agentmail_inbox_thread. The agent is left to infer when this tool beats a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_thread_attachmentInboxes - Get AttachmentCRead-onlyIdempotentInspect
Get Attachment
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The ID of the inbox. | |
| thread_id | Yes | ID of thread. | |
| attachment_id | Yes | ID of attachment. |
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, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds only a pricing blurb; it says nothing about auth requirements, what the returned attachment payload looks like, or how errors are surfaced.
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 text is short and front-loaded with the operation name, but the sole substantive content is a pricing/marketing block that contributes nothing to correct invocation. It is concise but not informative.
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?
An output schema exists so return values need not be explained, but for a tool sitting among ~60 siblings with three near-duplicate attachment getters, the description provides no scope differentiation, no prerequisite context, and no behavioral detail. It is under-specified for the ambiguity an agent faces.
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 three required IDs are documented in the schema itself. The description adds no syntax, format, or scoping nuance beyond that, which is the correct baseline-3 outcome when the schema does the work.
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 is literally just 'Get Attachment', which restates the title 'Inboxes - Get Attachment' without adding a verb+resource+scope. It does not distinguish this tool from near-identical siblings such as get_agentmail_thread_attachment, get_agentmail_inbox_message_attachment, or get_agentmail_draft_attachment.
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?
There is no indication of when to use this tool versus the many other attachment-fetching siblings, nor any prerequisite about needing an inbox_id/thread_id/attachment_id combination. Nothing misleading, but also no guidance whatsoever.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_inbox_threadsInboxes - List ThreadsCRead-onlyIdempotentInspect
List Threads
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Timestamp after which to filter by. | |
| limit | No | Limit of number of items returned. | |
| before | No | Timestamp before which to filter by. | |
| labels | No | Labels to filter by. | |
| senders | No | Filter to threads whose senders contain this value (substring match). Repeatable; all values must match. | |
| subject | No | Filter to threads whose subject contains this value (substring match). Repeatable; all values must match. | |
| inbox_id | Yes | The ID of the inbox. | |
| ascending | No | Sort in ascending temporal order. | |
| page_token | No | Page token for pagination. | |
| recipients | No | Filter to threads whose recipients contain this value (substring match). Repeatable; all values must match. | |
| include_spam | No | Include spam in results. | |
| include_trash | No | Include trash in results. | |
| include_blocked | No | Include blocked in results. | |
| include_unauthenticated | No | Include unauthenticated in results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds only a pricing note, which is cost context rather than behavioral disclosure about filtering, pagination, or result scope.
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 text is short and the purpose line is front-loaded, but the only substantive content is an HTML-commented pricing boilerplate block, so the brevity reflects a lack of information rather than efficient editing.
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?
An output schema exists and annotations cover safety, but for a 14-parameter listing tool the description offers no explanation of filtering semantics, spam/trash/blocked inclusion behavior, or how this differs from the global thread-listing sibling, leaving an agent without routing 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 description coverage is 100% across all 14 parameters, so the schema already documents each filter, sort, and pagination option thoroughly, establishing the baseline of 3. The description contributes nothing beyond the schema for any 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 is 'List Threads', which merely restates the title 'Inboxes - List Threads' with no additional detail. It does state a verb+resource, but it does not distinguish this inbox-scoped thread listing from siblings such as get_agentmail_threads or get_agentmail_inbox_messages, so it reads as a tautology rather than an explanation.
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?
There is no usage guidance whatsoever: no statement of when to prefer this inbox-scoped listing over get_agentmail_threads, no prerequisites, and no mention of the 14 filtering options available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_list_entriesManage List EntriesCRead-onlyIdempotentInspect
Retrieve or create entries in the specified list based on direction and type. Supports listing entries with pagination and adding new email addresses or domains with an optional reason.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of list entry. | |
| limit | No | Limit of number of items returned. | |
| direction | Yes | Direction of list entry. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, yet the description advertises creating entries and adding email addresses/domains. That is a direct write-vs-read contradiction, and no permission, side-effect, or rate-limit context is offered to resolve it.
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 two substantive sentences are front-loaded and compact. The injected pricing block is extraneous to tool semantics but appears to be boilerplate rather than authored 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?
An output schema exists so return values need not be explained, but the description's central claim (creation support) is unsupported by the schema and contradicted by the annotations, leaving the agent unable to know what the tool actually does.
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 all four parameters (direction, type, limit, page_token) are documented there, so the baseline is 3. The description adds nothing to their semantics and instead references an 'optional reason' that does not exist in the schema, which muddies rather than clarifies.
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 name and the first clause point at retrieving list entries, but the description then claims it can 'create entries' and add addresses/domains, which the schema does not support and the annotations deny. The mixed verb signal makes it hard to tell whether this is the read-side counterpart of post_agentmail_list_entry or a merged read/write tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions pagination and an 'optional reason' for additions but never says when to use this tool versus the many siblings (get_agentmail_list_entry, post_agentmail_list_entry, delete_agentmail_list_entry). No exclusions, no prerequisites, no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_list_entryManage List EntryCRead-onlyIdempotentInspect
Retrieve or delete a specific email address or domain entry from a list based on its direction and type.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of list entry. | |
| entry | Yes | Email address or domain. | |
| direction | Yes | Direction of list entry. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the tool can 'delete' an entry, while annotations declare readOnlyHint=true and destructiveHint=false, and a dedicated sibling delete_agentmail_list_entry exists for that purpose. This is a direct contradiction of the structured safety metadata on a security-relevant list-management tool. The pricing boilerplate adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core is a single front-loaded sentence, which is appropriately sized. But it wastes framing on a 'delete' capability the tool does not have, and the embedded pricing comment block occupies description space without helping selection or 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?
An output schema exists, so return values need not be explained. Still, for a tool with three required parameters and multiple near-identical siblings, the description omits any scoping or disambiguation and introduces a read/write ambiguity an agent must resolve some other way.
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%, with both enums documented inline, so the schema already carries the parameter burden. The description's phrase 'based on its direction and type' only restates what the schema already says and adds no format or constraint detail.
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 (retrieve a list entry by direction and type), which is enough to identify the operation. However, the added 'or delete' overstates the tool's scope and conflicts with the 'get_' prefix, muddling what the tool actually does. It also fails to distinguish this from close siblings such as get_agentmail_list_entries, get_agentmail_inbox_list_entry, and delete_agentmail_list_entry.
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?
No when-to-use guidance is given: nothing explains when to call this single-entry lookup versus the plural get_agentmail_list_entries, or the inbox-scoped get_agentmail_inbox_list_entry. No prerequisites or conditions are stated, so the agent must infer routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_metricsQuery MetricsCRead-onlyIdempotentInspect
Query Metrics
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End timestamp for the query. | |
| limit | No | Limit on number of buckets to return. | |
| start | No | Start timestamp for the query. | |
| period | No | Period in number of seconds for the query. | |
| descending | No | Sort in descending order. | |
| event_types | No | List of metric event types to query. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description's only added behavioral fact is the per-request price ($0.012 USD), which is genuinely useful context annotations do not carry, but it says nothing about rate limits, aggregation behavior, or data freshness.
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 text is short and front-loaded with the heading, but most of its body is marketplace pricing boilerplate that does not help an agent select or invoke the tool. It is not bloated, but the useful-content-to-total-content ratio is poor.
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?
An output schema exists, so return values need not be explained, and annotations cover safety. However, for a tool with six optional query parameters and a confusingly similar sibling, the description provides no domain framing at all — no statement of what event metrics are, what time windows mean, or how this differs from get_agentmail_inbox_metrics.
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 six parameters (start, end, period, limit, descending, event_types) are already documented in the schema. The description adds no additional meaning beyond that baseline, so a 3 is the correct floor.
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 is literally the title repeated: 'Query Metrics.' It restates the name rather than explaining what is being measured (delivery events? inbox activity?) or what resource the metrics belong to. With a near-identical sibling, get_agentmail_inbox_metrics, an agent cannot distinguish the two from this 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?
There is no when-to-use, when-not-to-use, or alternative-tool guidance anywhere in the description. The existence of get_agentmail_inbox_metrics makes this omission actively harmful, since nothing tells the agent which metrics endpoint to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_threadManage Email ThreadCRead-onlyIdempotentInspect
Retrieve, update, or delete an email thread by its ID. Supports fetching thread details, modifying labels, and deleting the thread permanently or moving it to trash.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit of number of items returned. | |
| thread_id | Yes | ID of thread. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts mutating and destructive behavior ('update', 'delete the thread permanently') while annotations declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. This directly contradicts structured data an agent relies on, and the schema offers only thread_id/limit/page_token with no action or force/trash parameter to select a delete mode. Pricing note is the only additive context.
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 core is only two sentences and is front-loaded, which is good. However, the injected pricing boilerplate interrupts the definition, and the second sentence spends its space enumerating capabilities the parameters cannot actually invoke.
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?
An output schema exists, so return values need no exposition, but for a tool advertised as capable of permanent deletion the description omits permission requirements, reversibility, and which parameter selects each mode. Combined with the readOnly annotation conflict, an agent lacks what it needs to call this safely.
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 all three parameters (thread_id, limit, page_token) are documented in the schema, so the baseline is 3. The description adds nothing about pagination or list-size behavior, and notably never explains how a single thread_id call could trigger the update/delete paths it advertises.
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 claims three distinct operations ('Retrieve, update, or delete') for a tool named get_agentmail_thread whose title is 'Manage Email Thread'. That tri-verb claim collides with both the tool's own name and real siblings like patch_agentmail_thread and delete_agentmail_thread, so an agent cannot tell which tool performs which action. It effectively restates the vague title rather than pinning down a single purpose.
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?
No when-to-use guidance is given, and the closest siblings (get_agentmail_inbox_thread, get_agentmail_threads, patch_agentmail_thread, delete_agentmail_thread) are never named or contrasted. The mention of 'permanently or moving it to trash' hints at a deletion mode but never says when to prefer which, nor which tool owns those paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_thread_attachmentGet AttachmentCRead-onlyIdempotentInspect
Get Attachment
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ID of thread. | |
| attachment_id | Yes | ID of attachment. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds no behavioral context beyond that — nothing about what is returned (file bytes vs. metadata), auth/inbox scoping requirements, or rate limits — only a boilerplate price note.
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?
It is short and front-loads the tool name, but the remaining content is an HTML-comment pricing block that conveys no functional information. Brevity here reflects under-specification rather than well-earned conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but in a toolset crowded with near-identical attachment getters, the description provides no differentiation or scoping context. An agent cannot confidently choose this over get_agentmail_inbox_thread_attachment or get_agentmail_inbox_message_attachment.
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% for both required parameters (thread_id and attachment_id), so the schema already documents the inputs. The description adds nothing on parameter meaning, but per the baseline for high coverage, 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 is essentially the title repeated ("Get Attachment"), a tautology over the tool name get_agentmail_thread_attachment. It does not say what kind of attachment is retrieved, from where, or how it differs from the many sibling attachment getters such as get_agentmail_inbox_message_attachment and get_agentmail_draft_attachment.
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?
No when-to-use guidance, no prerequisites, and no routing among the numerous sibling attachment/message/draft retrieval tools. The only additional sentence is a pricing disclaimer, which does not help an agent decide whether to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentmail_threadsList ThreadsCRead-onlyIdempotentInspect
List Threads
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Timestamp after which to filter by. | |
| limit | No | Limit of number of items returned. | |
| before | No | Timestamp before which to filter by. | |
| labels | No | Labels to filter by. | |
| senders | No | Filter to threads whose senders contain this value (substring match). Repeatable; all values must match. | |
| subject | No | Filter to threads whose subject contains this value (substring match). Repeatable; all values must match. | |
| ascending | No | Sort in ascending temporal order. | |
| page_token | No | Page token for pagination. | |
| recipients | No | Filter to threads whose recipients contain this value (substring match). Repeatable; all values must match. | |
| include_spam | No | Include spam in results. | |
| include_trash | No | Include trash in results. | |
| include_blocked | No | Include blocked in results. | |
| include_unauthenticated | No | Include unauthenticated in results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description contributes no additional behavioral context — no pagination behavior, no default filter state, no scope/auth notes — only a generic per-request price that is not tool-specific.
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?
It is short, but the content does not earn its place: one line repeats the title and the other is an HTML-commented pricing block that aids neither selection nor invocation. There is no front-loaded scoping or filtering information to orient the agent.
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 listing tool with many near-identical siblings, the description omits the one thing an agent cannot infer from the schema: which threads are listed (all inboxes? a scoped set?) and how this differs from get_agentmail_inbox_threads. The output schema does cover return values, so that gap is excused, but the scope ambiguity remains.
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% across all 13 parameters (each has a description covering date filters, substring-match semantics, repeatability, pagination token, and include_* flags), so the baseline of 3 applies. The description adds no parameter meaning of its own, neither compensating nor detracting.
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 body is literally 'List Threads', an exact restatement of the tool title, which the rubric classifies as tautology. It gives no verb+resource specificity beyond the name and does nothing to separate this tool from close siblings such as get_agentmail_inbox_threads, get_agentmail_inbox_thread, or get_agentmail_thread.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: no scope statement (all inboxes vs. a specific inbox), no mention of when to prefer this over get_agentmail_inbox_threads, and no exclusions. The only sentence present besides the title is a pricing boilerplate note, which does not help selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_any_agentmail_apis_v1_agentmail_api_keys_api_key_idDelete API KeyCRead-onlyIdempotentInspect
Delete API Key
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key_id | Yes | ID of api key. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states a destructive write operation ("Delete API Key") while the annotations declare readOnlyHint=true and destructiveHint=false. This is a direct contradiction, so the description cannot be trusted to reflect actual behavior. No permanence warning, authorization requirements, or rate-limit context is provided either.
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?
Front-loaded and very short, which is appropriate for a one-parameter tool. But the second block is generic pricing boilerplate that does not help an agent invoke the tool, so the content is minimal rather than efficiently earned.
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?
An output schema exists, so return values need no explanation. However, for a destructive delete with annotations that actively misrepresent the operation, the description should compensate with permanence/irreversibility and auth context; it offers none.
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% with a single api_key_id parameter documented in the schema. The description adds no meaning about the parameter (format, source, or where to obtain the ID), so the baseline 3 applies when the schema carries the burden.
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?
"Delete API Key" gives a specific verb (delete) and resource (API key), which is clearer than the opaque tool name. However, it is a verbatim restatement of the title with zero added specificity, and it does not distinguish this from sibling deletes such as delete_any_agentmail_apis_v1_agentmail_api_keys_a_3ff578 or the other delete_* 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 provides no when-to-use, when-not-to-use, prerequisites, or alternatives. The only extra text is a pricing boilerplate note, which gives no invocation guidance at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_any_agentmail_apis_v1_agentmail_domains_domain_idManage DomainCRead-onlyIdempotentInspect
Retrieve, update, or delete a domain by its ID, including details such as verification status, DNS records, and notification settings.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | The ID of the domain. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation contradiction. Annotations declare readOnlyHint=true, but the description claims the tool updates and deletes a domain. It cannot be both read-only and destructive. The description also does not disclose that the paid price applies per successful request beyond the embedded pricing block.
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 core sentence is reasonably tight and front-loaded with the verb and resource, but the embedded pricing HTML comment block is noise in a tool description and the multi-verb claim makes the sentence misleading rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required. But for a tool whose annotations and description disagree about whether it is read-only or destructive, the description leaves the agent unable to determine the actual safety profile, which is the most important thing to get right here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one fully documented parameter (domain_id, 'The ID of the domain.'), so the baseline is 3. The description adds nothing beyond what the schema already states about the 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 generic verb 'Retrieve, update, or delete' with the resource 'domain', and names fields returned. However, the name implies a read (get_) while the description claims three operations, and the sibling list contains distinct dedicated tools (patch_any_agentmail_apis_v1_agentmail_domains_domain_id, delete_any_agentmail_apis_v1_agentmail_domains_domain_id). It doesn't clearly position itself against those 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?
No guidance on when to use this tool versus the dedicated patch and delete domain siblings, or versus verify. The 'update or delete' framing actively blurs the boundary with siblings that perform those operations specifically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_any_agentmail_apis_v1_agentmail_inboxes_inbox_81bd1eList And Create Inbox API KeysCRead-onlyIdempotentInspect
Retrieve a list of API keys for a specific inbox or create a new API key with optional permissions and name.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit of number of items returned. | |
| inbox_id | Yes | The ID of the inbox. | |
| page_token | No | Page token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and idempotentHint=true, but the description says it can 'create a new API key' — an obvious mutation. This is a direct contradiction: creation is not a read-only or idempotent operation. The annotation contradiction is a serious issue as it misrepresents the tool's behavior. The description also fails to disclose permission requirements or side effects of key creation.
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 core sentence is concise, but the inclusion of a pricing note unrelated to tool functionality and the mention of non-existent parameters dilute focus. Still, it is relatively front-loaded and not overly verbose.
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 that both reads and creates API keys, the description is too thin. It omits authentication requirements, the nature of created keys (e.g., secret return), pagination behavior for listing, and the fact that creation is destructive/state-changing. With annotations contradicting the described behavior, an agent could easily misuse this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (limit, inbox_id, page_token). The description mentions 'optional permissions and name' which are not actual parameters in the schema, adding confusion rather than clarity. Baseline 3 is correct since the schema carries the load, but the extra mention of non-existent parameters is a slight negative.
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 two operations (list and create) on a specific resource (API keys for an inbox), which conveys the general purpose. However, the name 'get_any_agentmail_apis_v1_agentmail_inboxes_inbox_81bd1e' misleadingly starts with 'get' while the tool also creates API keys, and the description does not clarify that this is a dual-purpose tool. The purpose is vaguer than a specific verb+resource, landing at a 3.
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?
There is no guidance on when to use this tool versus siblings like get_any_agentmail_apis_v1_agentmail_api_keys_api_key_id or post_get_agentmail_api_keys. No prerequisites, no alternatives, no context about when to list vs create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesBrowse the AIsa catalogueARead-onlyInspect
The AIsa catalogue at a glance: categories, the servers in each, tool counts, and the dedicated endpoint to connect if you only need one category. Free. (AIsa-only: tool-router has no equivalent.) Use mcp.aisa.one/mcp?modules=<category> (or mcp.aisa.one/<category>/mcp) to have that category's tools listed directly instead of via search.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, closed-world operation. The description adds useful context beyond annotations by saying it returns categories, servers, tool counts, and the dedicated endpoint, and that it is free. It omits auth/rate-limit details, but those are less critical given the read-only 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 front-loaded with what the tool returns and is generally efficient. The parenthetical about tool-router and the endpoint URL add some density, but each part contributes usage or content context.
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 zero parameters, read-only annotations, and an output schema available, the description supplies enough context for correct invocation. It explains the catalogue contents and gives the category-specific endpoint alternative, leaving no critical gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not a meaningful differentiator. The schema has no properties to explain, and the description does not need to document any inputs.
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 that this tool gives a catalogue overview: categories, servers per category, tool counts, and a dedicated endpoint. The resource is specific and recognizable, though sibling differentiation is only partial because it references 'tool-router' rather than the listed siblings like search/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?
It gives a clear alternative: use the category-specific endpoint if you only need one category, rather than going via search. It also notes the tool is free and AIsa-only, but it does not explicitly state when to call list_categories instead of search or use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_agentmail_inboxManage InboxCDestructiveInspect
Retrieve, update, or delete a specific inbox by its ID. Returns inbox details including email, display name, client ID, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| inbox_id | Yes | The ID of the inbox. |
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 destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds no real behavioral context: it doesn't say this is a partial update, that at least one of display_name/status/metadata must be supplied, or how metadata merges/clears. Its return-value sentence duplicates the output schema.
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 two operative sentences are front-loaded and short, but they are inaccurate, and the appended aisa-pricing block is boilerplate that adds no selection value. Structure is acceptable; content efficiency is not.
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?
An output schema exists so return values needn't be described, yet the description omits the critical update constraint (at least one updatable field required) and the boundary against the sibling get/delete tools. For a destructive, non-idempotent mutation on a nested schema, this leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage and a nested body object, the description should compensate, but it says nothing about the body fields (status, metadata, display_name) or their merge semantics. 'By its ID' merely restates the required inbox_id already documented 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 claims the tool will 'Retrieve, update, or delete a specific inbox by its ID,' but the tool name (patch_agentmail_inbox) and the dedicated siblings get_agentmail_inbox and delete_agentmail_inbox show it only performs the update. The over-broad claim actively misroutes an agent looking to read or delete an inbox.
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?
No when-to-use guidance is given, and the description never points to get_agentmail_inbox or delete_agentmail_inbox for the read/delete cases it erroneously claims. The only implicit guidance is the mention of an inbox ID, which the schema already requires.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_agentmail_inbox_draftManage DraftCDestructiveInspect
Retrieve, update, or delete a specific email draft within an inbox by its ID. This endpoint allows you to get draft details, modify draft content and recipients, or remove the draft entirely.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Edit fields on an existing draft. A draft's kind (plain, reply, or forward) is fixed at creation and cannot be changed here. Omitting a field leaves it unchanged; passing `null` (or `[]` for a recipient field) clears it. Pass `send_at` to schedule or reschedule the draft, or `null` to un-schedule it. | |
| draft_id | Yes | ID of draft. | |
| inbox_id | Yes | The ID of the inbox. |
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=false, destructiveHint=true, and idempotentHint=false, so the safety profile is covered externally. The description adds only "remove the draft entirely," which is consistent with destructiveHint but redundant with it, and it omits mutation context such as partial-update behavior and the fact that draft kind is fixed. No contradiction, but little value added beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded, but the second sentence largely restates it ("get draft details, modify draft content and recipients, or remove the draft entirely"). The injected pricing boilerplate is noise but is system-generated. Net effect is a short but partly redundant description.
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?
An output schema exists, so return values need not be explained, and the input schema fully documents parameters. What is missing is the piece the structured data cannot provide: how this PATCH endpoint relates to the dedicated get/delete draft siblings it appears to overlap with, leaving the agent's tool selection ambiguous.
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 draft_id, inbox_id, and every field inside the nested UpdateDraftRequest, including the omit-vs-null clearing semantics. The description mentions "draft content and recipients" at a high level but adds no format or edge-case detail 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 resource is stated precisely ("a specific email draft within an inbox by its ID"), which an agent can map to the two required IDs. However, the verb is muddled: it claims to "Retrieve, update, or delete" a draft, even though dedicated siblings get_agentmail_inbox_draft and delete_agentmail_inbox_draft exist and the tool is named PATCH. The multi-verb framing blurs rather than sharpens the tool's identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over the sibling readers/deleters it claims to duplicate (get_agentmail_inbox_draft, delete_agentmail_inbox_draft). An agent reading only the description would reasonably call this for a read or a delete, which is the wrong routing. No prerequisites or preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_agentmail_inbox_messageGet Inbox MessageDDestructiveInspect
Retrieve detailed information about a specific message within an inbox, including sender, recipients, content, labels, attachments, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| inbox_id | Yes | The ID of the inbox. | |
| message_id | Yes | ID of message. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims a pure retrieval, while annotations declare readOnlyHint=false and destructiveHint=true and the schema exposes add_labels/remove_labels mutations. This directly contradicts both structured sources and hides the destructive label-modification behavior an agent must know about.
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 plus a pricing block; it is short and front-loaded, but the content is factually wrong for the tool, so the brevity is not earned. The pricing boilerplate is incidental noise.
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 patch operation with an output schema and a nested body object, the description fails to explain the mutation, the label add/remove semantics, or any prerequisites. It is actively incomplete and misdirecting.
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 word 'labels' in the description refers to returned fields, not the input body parameters add_labels/remove_labels, so it adds no meaning about the 3 inputs. With only 67% schema coverage, the body object's add/remove label semantics go unexplained in both places.
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 says the tool will 'Retrieve detailed information about a specific message,' which is a read operation, but the tool name is patch_agentmail_inbox_message and the schema requires a body with add_labels/remove_labels. This describes the wrong operation entirely and collides with the sibling get_agentmail_inbox_message.
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?
No when-to-use guidance is given, and the implied guidance is misleading: an agent reading this would invoke it as a read, when the actual read tool is the sibling get_agentmail_inbox_message. No alternatives or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_agentmail_inbox_threadManage Inbox ThreadCDestructiveInspect
Retrieve, update, or delete a specific email thread within an inbox, including details like messages, labels, senders, and timestamps.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| inbox_id | Yes | The ID of the inbox. | |
| thread_id | Yes | ID of thread. |
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 destructiveHint=true, readOnlyHint=false, idempotentHint=false, so the safety profile is partly covered. The description adds nothing beyond the verb list: it does not say a delete path removes the thread permanently, does not mention that label changes are non-idempotent in ordering (remove beats add), and does not state any auth requirement. The "retrieve" claim also sits awkwardly against a non-read-only 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?
A single front-loaded sentence with no padding; the only extra text is an auto-injected pricing block that is not author content. It is tight, though the three-verb enumeration is imprecise rather than economical.
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?
An output schema exists so return values need no explanation, but for a destructive, non-idempotent mutation tool with a nested body object the description leaves the scope of mutation, the identity of sibling alternatives, and any safety preconditions unaddressed. An agent could not confidently choose this over patch_agentmail_thread or get_agentmail_inbox_thread.
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 67%, and the schema already explains add_labels/remove_labels and the remove-over-add precedence. The description's mention of "labels" loosely maps to the body params but adds no format, constraint, or system-label caveat. With the schema doing most of the work, 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 claims the tool will "Retrieve, update, or delete" a thread, but sibling tools get_agentmail_inbox_thread and delete_agentmail_inbox_thread already own the retrieve and delete paths for the same resource. Advertising three CRUD verbs on a PATCH endpoint actively blurs which tool does what, so an agent cannot reliably distinguish it from its siblings on the description alone.
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?
There is no when-to-use statement at all, despite the sibling list containing direct competitors (get_agentmail_inbox_thread, patch_agentmail_thread, delete_agentmail_inbox_thread). The phrase "within an inbox" hints at inbox-scoped versus top-level variant, but the agent must infer that; no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_agentmail_threadManage Email ThreadDDestructiveInspect
Retrieve, update, or delete an email thread by its ID. Supports fetching thread details, modifying labels, and deleting the thread permanently or moving it to trash.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| thread_id | Yes | ID of thread. |
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 destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description's added behavioral claims — retrieval and permanent/trash deletion — are not achievable through this schema, so the extra context is inaccurate rather than additive. No PATCH/partial-update semantics are disclosed.
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 tool-specific portion is short and front-loaded, with no wasted sentences about the actual update behavior. However, the embedded 'aisa-pricing' boilerplate adds noise irrelevant to tool selection, and the brevity comes at the cost of accuracy rather than precision.
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?
An output schema exists, so return values need not be explained. But for a mutation tool with annotations carrying only the safety profile, the description should clarify idempotency, label-only scope, and non-reversibility; instead it describes capabilities the schema cannot perform, leaving the agent with an incorrect model of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the nested update body's add_labels/remove_labels constraints (no system labels, remove priority) are documented only in the schema. The description's generic 'modifying labels' neither clarifies that the body is the sole mutation channel nor warns that no other thread field can be patched, and it implies parameters that do not exist.
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 claims three incompatible operations — 'Retrieve, update, or delete an email thread by its ID' — while the schema only accepts a thread_id and an update body containing add_labels/remove_labels, i.e. label modification only. Retrieval and deletion are already covered by sibling tools get_agentmail_thread and delete_agentmail_thread, so the stated purpose actively misroutes the agent rather than distinguishing this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives are named, despite a dense sibling set (get_agentmail_thread, delete_agentmail_thread, patch_agentmail_inbox_thread). Worse, the 'fetching thread details' and 'deleting the thread' claims point the agent at the wrong tools for those operations. This is misleading rather than merely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_any_agentmail_apis_v1_agentmail_api_keys_ap_294dbbDelete API KeyCDestructiveInspect
Delete API Key
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Rename a credential or change its permissions. Key material, type, scope, and expiry are immutable. | |
| api_key_id | Yes | ID of api key. |
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 destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, covering the safety profile. The description adds no behavioral context about revocation, permission requirements, or irreversibility — its only non-title content is a published price ($0.012 per request), which is a small but genuine addition.
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?
It is short and front-loads the operation name, with no filler sentences. The injected aisa-pricing comment block is wrapper boilerplate, but it does carry cost information, so it is not pure waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested permissions object (the richest part of the schema), the description conveys none of what the call actually does and mislabels it as a deletion. An output schema exists so return values need no explanation, but the basic semantics an agent needs before invoking it are absent.
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 both parameters (api_key_id, plus the nested UpdateApiKeyRequest body with its full permission map) are documented in the schema. The description adds nothing on parameters, so the 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 is a verbatim restatement of the title ('Delete API Key') and nothing more, so it is a tautology by the rubric's definition. Worse, it conflicts with the tool's own schema: the name is prefixed 'patch_', the body is 'UpdateApiKeyRequest' ('Rename a credential or change its permissions'), and a distinct sibling (delete_any_agentmail_apis_v1_agentmail_api_keys_a_3ff578) exists for actual deletion. An agent cannot trust the stated purpose.
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?
Zero guidance on when to use this tool versus the sibling delete or get API-key tools. The only routing signal it gives ('Delete') points at the wrong operation, so it is actively misleading rather than merely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_any_agentmail_apis_v1_agentmail_domains_domain_idManage DomainCDestructiveInspect
Retrieve, update, or delete a domain by its ID, including details such as verification status, DNS records, and notification settings.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Provide at least one of `feedback_enabled`, `inbound_enabled`, `subdomains_enabled`, or `tracking_enabled`. Omitted fields are left unchanged; an empty body is rejected. Enabling `inbound_enabled` or `subdomains_enabled` on a verified domain returns it to `PENDING` until the newly required MX record (the apex MX, or the wildcard `*.<domain>`) is published and verified. | |
| domain_id | Yes | The ID of the domain. |
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 destructiveHint=true, non-idempotent, and openWorldHint, so mutation semantics are partially covered. The description adds no real behavioral context beyond that (no note that these are partial updates, no auth/permission requirements, no note that omitted fields are preserved), and its claim of 'retrieve/delete' overlaps siblings rather than clarifying this tool's distinct behavior.
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 core sentence is short and front-loaded, but the injected 'aisa-pricing' boilerplate is irrelevant to tool selection and invocation and dilutes the definition without adding agent value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values (verification status, DNS records) need not be explained. The schema thoroughly documents body constraints, so the definition is minimally complete, but it fails to disambiguate this tool from its get/delete/verify siblings, which is the key missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the two parameters (domain_id, body with nested fields) are fully documented in the schema, including the PENDING-state and MX-record consequences. The description adds nothing beyond that, which matches the baseline-3 case when the schema carries the load.
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?
It names a resource (domain) and verbs, but bundles three operations ('Retrieve, update, or delete') into one tool while sibling tools get_any_agentmail_apis_v1_agentmail_domains_domain_id and delete_any_agentmail_apis_v1_agentmail_domains_domain_id exist for those exact operations. The PATCH name suggests update-only, so the stated scope is both vague and at odds with the sibling set, leaving the agent unsure what this tool actually 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?
There is no when-to-use guidance, no prerequisites (e.g., that domain_id must exist), and no routing to the dedicated get/delete/verify siblings listed in the same namespace. The agent must infer selection purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_any_agentmail_apis_v1_agentmail_inboxes_inb_9e18e8Inboxes - Delete API KeyCDestructiveInspect
Delete API Key
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Rename a credential or change its permissions. Key material, type, scope, and expiry are immutable. | |
| inbox_id | Yes | The ID of the inbox. | |
| api_key_id | Yes | ID of api key. |
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 destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. What the description adds is only a pricing banner ($0.012 per successful request); it does not state required permissions (e.g. api_key_delete/api_key_update), whether the operation is reversible, or that key material/expiry are immutable, and its "Delete" framing contradicts the update-shaped body it actually accepts.
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?
It is short and front-loads the (title-restated) purpose, but the HTML-comment pricing block consumes roughly half the text and the remaining sentence contributes almost no differentiating content for a tool with a complex nested body.
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?
An output schema exists, so return values need not be explained, and the schema documents all three parameters. However, for a destructive mutation with a nested permissions object, the description omits auth/permission requirements and misidentifies the operation as a delete when the schema describes a rename/permission change — an agent could easily invoke the wrong sibling.
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%, including the nested permissions object and its per-flag meanings, so the schema carries the parameter burden and a baseline 3 applies. The description adds nothing about api_key_id, inbox_id, or the body, and the "Delete" framing arguably misrepresents that body.
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?
"Delete API Key" is a bare restatement of the title ("Inboxes - Delete API Key") and adds no distinguishing information from the many sibling key-management tools (delete_any_agentmail_apis_v1_agentmail_api_keys_a_3ff578, patch_any_agentmail_apis_v1_agentmail_api_keys_ap_294dbb). Worse, the verb conflicts with the tool name (patch) and with the request body schema (UpdateApiKeyRequest, documented as "Rename a credential or change its permissions"), making the stated purpose ambiguous/misleading.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The agent cannot tell from this text why it would call this PATCH-key tool rather than the similarly named delete/patch key siblings, nor what condition selects one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_inboxList And Create InboxesCDestructiveInspect
Retrieve a list of inboxes with pagination support or create a new inbox with optional custom username, domain, and display name.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
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 destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the description should add context about the write path — e.g. that creation is irreversible, requires a verified domain, or what the response contains. Instead it advertises 'pagination support' that no parameter in the schema exposes, which is at best unbacked behavior disclosure.
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 core is a single front-loaded sentence with no filler, which is good. However, cramming two distinct operations into one clause without a discriminator hurts scannability, and the injected pricing block adds text that does not help tool selection.
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 a nested 6-field request body, destructive creation semantics, and a dual list/create mode, the description omits the mode discriminator, prerequisites (verified domain / subdomain enablement), and the pagination parameters it advertises. The output schema covers return values, but the invocation contract is under-explained.
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?
Only one top-level parameter exists, and its nested properties (domain, status, metadata, username, client_id, display_name) are already well documented inside the schema. The description restates three of those field names but adds no syntax, defaults, or constraint detail beyond what the schema provides, so it sits at the documented 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 two concrete verb+resource operations (list inboxes, create an inbox) and names the creatable fields, so the tool's function is clear. It stops short of distinguishing itself from the sibling get_agentmail_inboxes, which also lists inboxes, leaving genuine routing ambiguity between the two.
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?
There is no guidance on when to use this tool versus get_agentmail_inboxes for listing, nor any explanation of what selects list mode versus create mode (presumably the presence of `body`, but that is never stated). The agent is left to infer the trigger condition for a dual-behavior tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_inbox_draftList DraftsDDestructiveInspect
Retrieve a list of email drafts from the specified inbox, with optional filters and pagination support.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Body for creating a draft. Supports plain, reply, reply-all, and forward drafts: - **Plain draft:** supply `to`, `subject`, `text`, etc. - **Reply:** set `in_reply_to` to a message ID. Recipients, subject, and threading are derived from that message. Set `reply_all` to address the whole thread (you then cannot also pass `to`, `cc`, or `bcc`). - **Forward:** set `forward_of` to a message ID. The subject and threading are derived from the source message, whose body and attachments are merged in at send time. `in_reply_to` and `forward_of` are mutually exclusive, and reading the referenced message requires `message_read` permission. | |
| inbox_id | Yes | The ID of the inbox. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=true, and non-idempotent, but the description describes a read-only list retrieval. This is a direct contradiction: an agent trusting the text would expect a safe read while the tool performs a mutating, destructive write. No permissions, side effects, or mutation consequences are disclosed.
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 text is short and front-loaded, and the invariable pricing boilerplate is injected rather than authored. Structure is fine, but the single substantive sentence conveys the wrong operation, so conciseness is not earning anything here.
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, non-idempotent write tool with a nested CreateDraftRequest body, the description omits everything an agent needs: that it creates a draft, the reply/forward/reply_all semantics, permission requirements, and side effects. It is not merely incomplete but describes an entirely different operation.
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 would be 3, but the description's claim of 'optional filters and pagination support' is false — the only parameters are inbox_id and a required draft-creation body. Rather than adding meaning, the text mischaracterizes the 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?
The description claims the tool 'retrieves a list of email drafts', but the tool name (post_), the required CreateDraftRequest body, and the write annotations all indicate this creates a draft. The stated purpose is not just vague but actively misleading — it points an agent at an opposite operation.
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?
No guidance on when to use this vs. siblings such as get_agentmail_inbox_drafts, get_agentmail_drafts, or post_agentmail_inbox_draft_send. The only usage hint ('optional filters and pagination support') describes capabilities the schema does not even have, so it misdirects rather than guides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_inbox_draft_sendInboxes - Send DraftDDestructiveInspect
Send Draft
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| draft_id | Yes | ID of draft. | |
| inbox_id | Yes | The ID of the inbox. |
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 destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is conveyed structurally. The description adds only a pricing note and says nothing about the irreversible consequence of sending, whether the draft is consumed, or auth requirements — so it contributes little behavioral value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short but that brevity is under-specification, not conciseness. The only substantive content is an embedded pricing comment block, which is not what the agent needs front-loaded 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?
An output schema exists, so return values need not be described, but for a destructive, non-idempotent send operation with a nested parameter object the description omits nearly all context an agent would need to invoke it confidently.
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 only 67% and the description mentions no parameters at all. It does not clarify draft_id vs inbox_id, nor the nested body object with add_labels/remove_labels, leaving the agent reliant entirely on 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?
"Send Draft" merely restates the title "Inboxes - Send Draft" and the tool name. It conveys a verb and a resource, but with no scope, no target identifier, and no differentiation from sibling senders like post_agentmail_inbox_message_send, it reads as a tautology rather than a purpose statement.
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?
No guidance whatsoever on when to use this versus post_agentmail_inbox_message_send or post_agentmail_inbox_draft (create draft). The agent must infer from the name that this promotes an existing draft to a sent message; nothing states prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_inbox_list_entryList Or Create Inbox List EntryBDestructiveInspect
Retrieve or add entries to a specific inbox list based on direction and type. Supports listing entries with pagination and creating new entries with optional reasons.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| type | Yes | Type of list entry. | |
| inbox_id | Yes | The ID of the inbox. | |
| direction | Yes | Direction of list entry. |
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 destructiveHint=true, idempotentHint=false, and openWorldHint=true, lowering the burden. The description adds pagination behavior for listing and 'optional reasons' for creation, which is useful but thin; it does not explain what 'reasons' means behaviorally or whether re-adding an existing entry is idempotent.
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 two operational sentences are front-loaded and waste-free. The injected pricing block adds clutter that does not serve tool selection, but the core description is appropriately sized.
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, return values need not be described, and annotations cover the safety profile. The remaining gap is selection guidance against overlapping siblings (get/post inbox list entries), which is not addressed, leaving the agent to infer which endpoint to call.
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 75%, so the schema already documents most parameters (entry, reason, inbox_id, type, direction). The description only restates 'based on direction and type' and 'optional reasons', adding little syntax or format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Retrieve or add entries to a specific inbox list'. It clarifies the dual list/create nature, which is unusual for a POST-named tool. However, it does not distinguish itself from adjacent siblings like get_agentmail_inbox_list_entries, get_agentmail_inbox_list_entry, or post_agentmail_list_entry.
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?
There is no when-to-use guidance, no explanation of when the tool lists vs. creates, and no routing to alternatives such as the dedicated get/post siblings. The 'Retrieve or add' phrasing implies usage but gives no conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_inbox_message_forwardInboxes - Forward MessageDDestructiveInspect
Forward Message
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| inbox_id | Yes | The ID of the inbox. | |
| message_id | Yes | ID of message. |
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=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered without the description. The description adds a published price ($0.012 per successful request) but says nothing about the forwarding behavior itself — that a new outbound message is dispatched to externally-supplied recipients, or that the original is preserved. 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?
It is short, but the bulk of the text is an inline pricing comment block that does not help an agent select or invoke the tool. The single content-bearing phrase duplicates the title, so none of the text earns its place beyond cost disclosure.
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?
This is a destructive, non-idempotent, open-world mutation with a nested request body and an output schema. An output schema exists so return values need not be described, but the description omits the essential forwarding semantics and required-field expectations (e.g., what the body must contain to dispatch the forward).
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 67%, and the description contributes zero parameter meaning. It never explains that inbox_id/message_id identify the source message while the nested body object defines the new forwarded message (to/cc/bcc, subject, attachments). With mid-level schema coverage, the description fails to compensate for the gaps.
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 text is literally 'Forward Message', which restates the tool name and title without adding scope, object, or effect. It does not distinguish this tool from close siblings like post_agentmail_inbox_message_reply, reply_all, or send. Tautological restatement of the title.
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?
There is no guidance whatsoever about when to use forwarding versus reply/reply_all/send, nor any prerequisite such as needing an existing inbox and message. The only prose present is a pricing disclaimer, which does not help tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_inbox_message_replyInboxes - Reply To MessageDDestructiveInspect
Reply To Message
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| inbox_id | Yes | The ID of the inbox. | |
| message_id | Yes | ID of message. |
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 destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The only behavioral content the description adds is a published price of $0.012 per successful request, which is marginally useful, but it says nothing about what the call actually does on the wire (new outbound message, thread linkage, irreversibility of sending).
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 text is short, but it is not concise so much as under-specified: the only substantive content is a pricing boilerplate block appended after a title restatement. Nothing is front-loaded that helps an agent act, so brevity here is a deficiency rather than an efficiency.
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?
This is a complex mutation tool with a nested request body, three parameters, and message-thread semantics, and the description supplies none of the context an agent needs. The existence of an output schema and safety annotations does not compensate for the missing explanation of reply construction and sending behavior.
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 67%, below the 80% threshold at which the schema alone justifies a 3. The description explains none of the three top-level parameters and does not clarify the reply-specific semantics of message_id or the nested body options (reply_all, to/cc/bcc, attachments size limits) that the schema only partially documents.
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 is literally the title restated ('Reply To Message'), which is the definition of a tautology under the rubric. It does imply replying to a message, but it offers no verb nuance, scope, or anything that separates it from post_agentmail_inbox_message_reply_all, post_agentmail_inbox_message_forward, or post_agentmail_inbox_message_send.
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?
There is no usage guidance whatsoever. It never says when to reply versus reply-all versus forward, nor whether the reply is threaded onto message_id, nor what prerequisites (e.g., inbound message) must hold. Nothing routes the agent to the correct sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_inbox_message_reply_allInboxes - Reply All MessageDDestructiveInspect
Reply All Message
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| inbox_id | Yes | The ID of the inbox. | |
| message_id | Yes | ID of message. |
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 destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds only a pricing note and does not disclose what gets destroyed, permission requirements, reversibility, or any behavioral side effects beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but it spends its only non-title sentence on pricing boilerplate rather than invocation-relevant semantics. It is under-specified rather than concise and helpful.
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 complex, destructive, non-idempotent email operation with nested attachment and tracking fields, the description is almost entirely absent. It omits operational context, alternatives, and parameter guidance, failing to prepare an agent to call it 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 67%, leaving some parameter meaning to the schema, but the description contributes no parameter information at all. It neither explains the required inbox_id and message_id nor adds context for the nested body fields.
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 is essentially the tool title, 'Reply All Message,' with no additional explanation of what reply-all means or how it differs from sibling tools like post_agentmail_inbox_message_reply and post_agentmail_inbox_message_forward. It restates the name rather than clarifying the action.
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?
There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as reply, forward, or send. The agent must infer all usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_inbox_message_sendInboxes - Send MessageDDestructiveInspect
Send Message
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| inbox_id | Yes | The ID of the inbox. |
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=false, destructiveHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The only behavioral content the description adds is a per-request price of $0.012 USD, which is genuinely useful cost context but is not accompanied by any disclosure about delivery, permissions required, or side effects of sending.
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 text is short and front-loads the verb, but the bulk of it is boilerplate pricing markup whose comments and framing consume most of the length. It is concise without being substantive, so the brevity does not translate into usefulness.
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 write-capable send tool with a nested request object and multiple near-identical siblings, the description supplies almost nothing beyond the title. The existence of an output schema excuses it from explaining return values, but the missing usage routing and body semantics leave an agent under-equipped to invoke it 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?
The description says nothing about the two top-level parameters, and the 'body' object itself has no schema description (only its nested sub-properties do), so coverage sits at 50%. At that coverage level the description is expected to compensate and it does not — no mention of required fields, recipient semantics, or attachment constraints.
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 is only 'Send Message', which essentially restates the tool name (post_agentmail_inbox_message_send) and title ('Inboxes - Send Message') without adding a verb+resource articulation. It does not distinguish this send-new-message tool from close siblings such as post_agentmail_inbox_message_reply, post_agentmail_inbox_message_forward, or post_agentmail_inbox_draft_send.
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?
There is no when-to-use, when-not-to-use, or alternative-tool guidance anywhere in the description. With siblings covering reply, reply-all, forward, and draft-send, the absence of routing guidance is a serious gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_agentmail_list_entryManage List EntriesCDestructiveInspect
Retrieve or create entries in the specified list based on direction and type. Supports listing entries with pagination and adding new email addresses or domains with an optional reason.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| type | Yes | Type of list entry. | |
| direction | Yes | Direction of list entry. |
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=false, destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds useful context that entry creation accepts an email address or domain plus an optional reason, but omits what happens on duplicates or how this differs from the sibling create tool.
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 core sentence is front-loaded and brief, but the phrasing 'based on direction and type' is vague and the appended pricing boilerplate consumes attention without aiding tool selection.
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?
An output schema exists, so return values need no explanation, and annotations carry the mutation/destructive profile. Still, for a dual-mode POST with a nested body and two enums, the description leaves gaps about which operation is triggered when and how the call relates to sibling list-entry tools.
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 67%, with enum values (allow/block, send/receive/reply) documented in the schema itself. The description adds modest value by clarifying that the entry can be an email address or domain and that the reason is optional, matching the nested body schema without adding new 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?
The description names specific verbs (retrieve, create) and a resource (list entries), and mentions the direction/type qualifiers. However, it never clarifies how this POST-based dual-purpose tool differs from its dedicated siblings get_agentmail_list_entries and post_agentmail_inbox_list_entry, leaving the agent unsure which 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?
It states the tool can list with pagination or add an entry with an optional reason, but gives no when-to-use guidance, no prerequisites, and no pointer to the GET/DELETE siblings that cover the read/remove sides of the same resource. The 'based on direction and type' phrase is suggestive but not actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_any_agentmail_apis_v1_agentmail_inboxes_inbo_5d0d22List And Create Inbox API KeysBDestructiveInspect
Retrieve a list of API keys for a specific inbox or create a new API key with optional permissions and name.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | A body with `public_key` registers a public-key credential; any other body mints a bearer key. | |
| inbox_id | Yes | The ID of the inbox. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is partly covered. The description adds that the tool is dual-mode (list vs create) but omits the consequential behaviors captured only in the schema - the 403 on over-long expiry, permission inheritance/defaults, and that creating a public-key credential has different semantics from minting a bearer key.
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?
A single well-formed sentence that front-loads both capabilities, plus a pricing boilerplate block. Nothing in the prose is wasted, though the injected price marker dilutes an otherwise lean definition.
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?
An output schema exists, so return values need no explanation, and the schema covers parameters thoroughly. What is missing is context an agent needs to route correctly: how this inbox-scoped key endpoint differs from the org-level api_keys siblings, and that the annotations' destructive flag applies only to the create branch.
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 body's oneOf branches are heavily documented, so the baseline is 3. The description names only 'permissions and name' for the create path and says nothing about inbox_id scoping or the public_key variant, adding no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb pair and resource: retrieve API keys for an inbox, or create a new one. The 'for a specific inbox' scope helps separate it from the org-level key sibling (post_get_agentmail_api_keys), but the description never names that sibling so the differentiation is implicit rather than 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?
No when-to-use guidance, no exclusions, no named alternative. The description also does not explain that the list-vs-create choice is driven by whether a body is supplied, which is the single most important selection fact about this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_get_agentmail_api_keysList And Create API KeysBDestructiveInspect
Retrieve a paginated list of API keys or create a new API key with optional permissions and scope settings.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | A body with `public_key` registers a public-key credential; any other body mints a bearer key. |
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 destructiveHint=true, readOnlyHint=false, idempotentHint=false, so the safety profile is covered structurally. The description adds only mild context ("paginated", "optional permissions and scope settings") and does not disclose creation side effects, the 403 expiry constraint, or idempotency behavior — though those details do appear in the nested schema.
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?
A single well-formed sentence that front-loads the two operations. It is efficient, though the appended pricing blockquote is boilerplate not intrinsic to the tool's semantics.
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?
An output schema exists so return values need not be explained, and params are fully documented in the schema. However, for a tool that conflates a read and a destructive write behind one endpoint, the description omits the operational trigger that an agent needs to call it correctly, leaving a meaningful 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 coverage is 100% and there is a single `body` parameter, so the schema carries the full semantic burden (including the oneOf bearer/public-key distinction). The description only gestures at "permissions and scope settings," adding marginally beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resource: "Retrieve a paginated list of API keys or create a new API key." The dual-mode (list/create) nature is clear, but the description does not distinguish itself from siblings like get_any_agentmail_apis_v1_agentmail_api_keys_api_key_id or patch/delete variants operating on the same resource.
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 offers no when-to-use guidance and, critically, never explains how to select between the two bundled operations (listing vs creating) via the single body parameter. An agent must infer the mode switch from the schema rather than the prose, and no alternatives (e.g. get/patch key endpoints) are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_get_agentmail_domainsList And Create DomainsCDestructiveInspect
Retrieve a paginated list of domains or create a new domain with verification and feedback settings.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
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 destructiveHint=true, idempotentHint=false, readOnlyHint=false, openWorldHint=true, so the safety profile is covered. The description adds 'with verification and feedback settings' and a per-request price, but omits essential behavior: creating triggers DNS record publication and verification state, duplicates or conflicting providers error out (422), and the list side is paginated with no page-size or cursor 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?
The core description is a single front-loaded sentence with no filler, and the operation is stated before any caveat. The appended pricing block is boilerplate injected by the platform rather than authored text, so it is not penalized heavily.
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?
An output schema exists, so return values need not be explained, and annotations cover safety. What is missing is the piece unique to this tool: how a caller selects list versus create, and that domain creation is a non-idempotent operation with downstream verification consequences. For a dual-purpose mutation tool this is a material 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?
Reported schema coverage is 0% at the top level, and the single 'body' parameter has no description, so the description carries the burden. Instead it says nothing about how body presence selects create vs list, which is the one parameter semantic an agent most needs. Nested property descriptions exist in the schema, which softens but does not remove the gap.
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 both specific operations (paginated list of domains, create a new domain) and the resource, so an agent can tell what the tool does. However, it gives no differentiation from siblings such as get_any_agentmail_apis_v1_agentmail_domains_domain_id or the delete/patch domain tools, and the combined 'list OR create' phrasing sits awkwardly against the post_get_ naming.
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?
Nothing states when to use one mode versus the other. Critically, the description never explains the dispatch rule (presumably: omit body to list, supply body to create), nor does it name alternatives for listing or creating domains. The agent must guess which behavior a given call will trigger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch AIsa tools and agent-ready plansARead-onlyInspect
Discover AIsa tools and Plans for external data or actions. Skip tasks that only need supplied content or general knowledge. For multi-step tasks, search the full goal before decomposing it. Use English; put identifiers in known_fields. If has_full_schema=false, call batch_get_schema. Next call batch_quote, not batch_use. Do not search for standalone rewriting, translation, summarization, formatting, or calculations on supplied content. For one capability, use an atomic query. Select a matching capability, date window, and metric. A Plan may cover only part of the task; assess its purpose and follow next_steps_guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of additional direct tool candidates. | |
| query | Yes | Natural-language capability or task to discover. | |
| category | No | Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.) | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| known_fields | No | Known values such as ticker, URL, provider, or identifier that improve retrieval. | |
| provider_filters | No | Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | No | |
| tools | Yes | |
| search_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| retrieval_mode | No | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds workflow behavior the annotations cannot: the has_full_schema flag gates a required batch_get_schema call, and the next step after search is batch_quote, not batch_use. It stops short of disclosing retrieval limits or catalog breadth that would push it to a 5.
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?
It is a dense run of imperatives rather than flowing prose, but each sentence carries a distinct rule (scope, language, workflow branch, negative cases, result interpretation) and the most important scoping guidance is front-loaded. Slightly more compression would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it correctly avoids doing so while still referencing the output fields that drive the workflow (has_full_schema, next_steps_guidance). A mutation-free, well-annotated search tool is adequately covered, though catalog scope ('AIsa-only', no external providers) could be stated more 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 coverage is 100%, so the structured baseline is 3. The description adds genuine meaning beyond the schema by telling the agent to write the query in English and to place tickers, URLs, providers, or identifiers in known_fields, which is non-obvious routing guidance for a nested free-form object.
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 verb+resource: 'Discover AIsa tools and Plans for external data or actions.' It also separates this discovery step from the sibling execution tools by naming batch_get_schema, batch_quote, and batch_use and stating when each follows, so an agent can place it in the workflow without opening schemas.
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 ('tasks needing external data or actions'), when-not ('tasks that only need supplied content or general knowledge'; no standalone rewriting, translation, summarization, formatting, or calculations), and named alternatives (batch_get_schema when has_full_schema=false, batch_quote rather than batch_use). It also specifies query language and atomic-query style, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
useRun an AIsa operationCDestructiveInspect
deprecated, use batch_use instead
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | Arguments matching input_schema / arguments_schema | |
| search_id | No | search_id from the search that found this operation | |
| operation_id | Yes | operation_id as returned by search | |
| max_price_usd | No | Refuse the call before any spend if its quoted price is above this many USD |
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=false, destructiveHint=true, and openWorldHint=true, so the agent knows this is a state-changing, open-world operation. The description adds only the deprecation status and says nothing about what gets mutated, spend behavior (despite a max_price_usd param), or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause with zero waste; the deprecation notice and the replacement are front-loaded. It is terse by design for a deprecated endpoint, though it is under-specified rather than optimally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has an output schema and annotations, which reduces the burden, but a 4-parameter operation tool with a deprecation notice gives no information about what it executes or whether it remains functional. For an agent deciding between this and batch_use, the description is thin.
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 four parameters (operation_id, arguments, search_id, max_price_usd) are already documented in the schema. The description adds no parameter meaning on top, so the 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 never states what the tool does — no verb or resource. It only labels the tool as deprecated and points to a replacement, leaving the actual capability ('Run an AIsa operation' from the title) unexplained. An agent must infer the purpose from the title and schema alone.
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 routes the agent to the alternative ('use batch_use instead'), which is exactly the guidance needed for a deprecated tool. It doesn't explain when, if ever, this tool should still be called (e.g., during a migration window), 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
22 tool updates
- Added
account - Removed
get_details - Changed
patch_agentmail_inbox5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "display_name": { + "description": "Display name: `Display Name <username@domain.com>`.", + "title": "DisplayName", + "type": "string" + }, + "metadata": { + "description": "Metadata to merge into the inbox's existing metadata. Keys you include\nare added or overwritten; keys you omit are left unchanged. To remove a\nsingle key, send it with a null value. To clear all metadata, send\n`metadata` as null. Sending an empty object is rejected; use null to\nclear. Each update must include at least one of `display_name`,\n`status`, or `metadata`.", + "oneOf": [ + { + "additionalProperties": { + "oneOf": [ + { + "description": "A metadata value. May be a string, number, or boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "format": "double", + "type": "number" + }, + { + "type": "boolean" + } + ], + "title": "MetadataValue" + }, + { + "type": "null" + } + ] + }, + "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", + "title": "UpdateMetadata", + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "description": "`paused` stops the inbox sending and receiving mail; `active` resumes\nit. Mail that arrived while the inbox was paused is not delivered on\nresume.", + "enum": [ + "active", + "paused" + ], + "title": "InboxStatus", + "type": "string" + } + }, + "title": "UpdateInboxRequest", + "type": "object" +} - removed
Input schema / properties / display_nameRemoved value: -{ - "description": "Display name: `Display Name <username@domain.com>`.", - "title": "DisplayName", - "type": "string" -} - removed
Input schema / properties / metadataRemoved value: -{ - "description": "Metadata to merge into the inbox's existing metadata. Keys you include\nare added or overwritten; keys you omit are left unchanged. To remove a\nsingle key, send it with a null value. To clear all metadata, send\n`metadata` as null. Sending an empty object is rejected; use null to\nclear. Each update must include at least one of `display_name`,\n`status`, or `metadata`.", - "oneOf": [ - { - "additionalProperties": { - "oneOf": [ - { - "description": "A metadata value. May be a string, number, or boolean.", - "oneOf": [ - { - "type": "string" - }, - { - "format": "double", - "type": "number" - }, - { - "type": "boolean" - } - ], - "title": "MetadataValue" - }, - { - "type": "null" - } - ] - }, - "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", - "title": "UpdateMetadata", - "type": "object" - }, - { - "type": "null" - } - ] -} - removed
Input schema / properties / statusRemoved value: -{ - "description": "`paused` stops the inbox sending and receiving mail; `active` resumes\nit. Mail that arrived while the inbox was paused is not delivered on\nresume.", - "enum": [ - "active", - "paused" - ], - "title": "InboxStatus", - "type": "string" -}
- Changed
patch_agentmail_inbox_draft14 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / add_attachmentsRemoved value: -{ - "description": "Attachments to add to the draft.", - "items": { - "description": "Provide either `content` or `url` for each attachment.", - "properties": { - "content": { - "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", - "type": "string" - }, - "content_disposition": { - "description": "Content disposition of attachment.", - "enum": [ - "inline", - "attachment" - ], - "title": "AttachmentContentDisposition", - "type": "string" - }, - "content_id": { - "description": "Content ID of attachment.", - "title": "AttachmentContentId", - "type": "string" - }, - "content_type": { - "description": "Content type of attachment.", - "title": "AttachmentContentType", - "type": "string" - }, - "filename": { - "description": "Filename of attachment.", - "title": "AttachmentFilename", - "type": "string" - }, - "url": { - "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", - "type": "string" - } - }, - "title": "SendAttachment", - "type": "object" - }, - "type": "array" -} - removed
Input schema / properties / add_labelsRemoved value: -{ - "description": "Label or labels to add to the draft.", - "items": { - "type": "string" - }, - "title": "DraftLabels", - "type": "array" -} - removed
Input schema / properties / bccRemoved value: -{ - "oneOf": [ - { - "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftBcc", - "type": "array" - }, - { - "type": "null" - } - ] -} - added
Input schema / properties / bodyAdded value: +{ + "description": "Edit fields on an existing draft. A draft's kind (plain, reply, or forward)\nis fixed at creation and cannot be changed here. Omitting a field leaves it\nunchanged; passing `null` (or `[]` for a recipient field) clears it. Pass\n`send_at` to schedule or reschedule the draft, or `null` to un-schedule it.", + "properties": { + "add_attachments": { + "description": "Attachments to add to the draft.", + "items": { + "description": "Provide either `content` or `url` for each attachment.", + "properties": { + "content": { + "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", + "type": "string" + }, + "content_disposition": { + "description": "Content disposition of attachment.", + "enum": [ + "inline", + "attachment" + ], + "title": "AttachmentContentDisposition", + "type": "string" + }, + "content_id": { + "description": "Content ID of attachment.", + "title": "AttachmentContentId", + "type": "string" + }, + "content_type": { + "description": "Content type of attachment.", + "title": "AttachmentContentType", + "type": "string" + }, + "filename": { + "description": "Filename of attachment.", + "title": "AttachmentFilename", + "type": "string" + }, + "url": { + "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", + "type": "string" + } + }, + "title": "SendAttachment", + "type": "object" + }, + "type": "array" + }, + "add_labels": { + "description": "Label or labels to add to the draft.", + "items": { + "type": "string" + }, + "title": "DraftLabels", + "type": "array" + }, + "bcc": { + "oneOf": [ + { + "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftBcc", + "type": "array" + }, + { + "type": "null" + } + ] + }, + "cc": { + "oneOf": [ + { + "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftCc", + "type": "array" + }, + { + "type": "null" + } + ] + }, + "html": { + "oneOf": [ + { + "description": "HTML body of draft.", + "title": "DraftHtml", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "remove_attachments": { + "description": "IDs of attachments to remove from the draft.", + "items": { + "description": "ID of attachment.", + "title": "AttachmentId", + "type": "string" + }, + "type": "array" + }, + "remove_labels": { + "description": "Label or labels to remove from the draft.", + "items": { + "type": "string" + }, + "title": "DraftLabels", + "type": "array" + }, + "reply_to": { + "oneOf": [ + { + "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftReplyTo", + "type": "array" + }, + { + "type": "null" + } + ] + }, + "send_at": { + "oneOf": [ + { + "description": "Time at which to schedule send draft.", + "format": "date-time", + "title": "DraftSendAt", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "subject": { + "oneOf": [ + { + "description": "Subject of draft.", + "title": "DraftSubject", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "oneOf": [ + { + "description": "Plain text body of draft.", + "title": "DraftText", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "to": { + "oneOf": [ + { + "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftTo", + "type": "array" + }, + { + "type": "null" + } + ] + } + }, + "title": "UpdateDraftRequest", + "type": "object" +} - removed
Input schema / properties / ccRemoved value: -{ - "oneOf": [ - { - "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftCc", - "type": "array" - }, - { - "type": "null" - } - ] -} - removed
Input schema / properties / htmlRemoved value: -{ - "oneOf": [ - { - "description": "HTML body of draft.", - "title": "DraftHtml", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Input schema / properties / remove_attachmentsRemoved value: -{ - "description": "IDs of attachments to remove from the draft.", - "items": { - "description": "ID of attachment.", - "title": "AttachmentId", - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / remove_labelsRemoved value: -{ - "description": "Label or labels to remove from the draft.", - "items": { - "type": "string" - }, - "title": "DraftLabels", - "type": "array" -} - removed
Input schema / properties / reply_toRemoved value: -{ - "oneOf": [ - { - "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftReplyTo", - "type": "array" - }, - { - "type": "null" - } - ] -} - removed
Input schema / properties / send_atRemoved value: -{ - "oneOf": [ - { - "description": "Time at which to schedule send draft.", - "format": "date-time", - "title": "DraftSendAt", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Input schema / properties / subjectRemoved value: -{ - "oneOf": [ - { - "description": "Subject of draft.", - "title": "DraftSubject", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Input schema / properties / textRemoved value: -{ - "oneOf": [ - { - "description": "Plain text body of draft.", - "title": "DraftText", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Input schema / properties / toRemoved value: -{ - "oneOf": [ - { - "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftTo", - "type": "array" - }, - { - "type": "null" - } - ] -}
- Changed
patch_agentmail_inbox_message4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / add_labelsRemoved value: -{ - "description": "Label or labels to add to message.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "UpdateMessageLabels" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "add_labels": { + "description": "Label or labels to add to message.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "UpdateMessageLabels" + }, + "remove_labels": { + "description": "Label or labels to remove from message.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "UpdateMessageLabels" + } + }, + "title": "UpdateMessageRequest", + "type": "object" +} - removed
Input schema / properties / remove_labelsRemoved value: -{ - "description": "Label or labels to remove from message.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "UpdateMessageLabels" -}
- Changed
patch_agentmail_inbox_thread4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / add_labelsRemoved value: -{ - "description": "Labels to add to thread. Cannot be system labels.", - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "add_labels": { + "description": "Labels to add to thread. Cannot be system labels.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remove_labels": { + "description": "Labels to remove from thread. Cannot be system labels. Takes priority over `add_labels` (in the event of duplicate labels passed in).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "title": "UpdateThreadRequest", + "type": "object" +} - removed
Input schema / properties / remove_labelsRemoved value: -{ - "description": "Labels to remove from thread. Cannot be system labels. Takes priority over `add_labels` (in the event of duplicate labels passed in).", - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
patch_agentmail_thread4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / add_labelsRemoved value: -{ - "description": "Labels to add to thread. Cannot be system labels.", - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "add_labels": { + "description": "Labels to add to thread. Cannot be system labels.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remove_labels": { + "description": "Labels to remove from thread. Cannot be system labels. Takes priority over `add_labels` (in the event of duplicate labels passed in).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "title": "UpdateThreadRequest", + "type": "object" +} - removed
Input schema / properties / remove_labelsRemoved value: -{ - "description": "Labels to remove from thread. Cannot be system labels. Takes priority over `add_labels` (in the event of duplicate labels passed in).", - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
patch_any_agentmail_apis_v1_agentmail_api_keys_ap_294dbb4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "description": "Rename a credential or change its permissions. Key material, type,\nscope, and expiry are immutable.", + "properties": { + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + } + }, + "title": "UpdateApiKeyRequest", + "type": "object" +} - removed
Input schema / properties / nameRemoved value: -{ - "description": "Name of api key.", - "title": "Name", - "type": "string" -} - removed
Input schema / properties / permissionsRemoved value: -{ - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" -}
- Changed
patch_any_agentmail_apis_v1_agentmail_domains_domain_id6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "description": "Provide at least one of `feedback_enabled`, `inbound_enabled`,\n`subdomains_enabled`, or `tracking_enabled`. Omitted fields are left\nunchanged; an empty body is rejected. Enabling `inbound_enabled` or\n`subdomains_enabled` on a verified domain returns it to `PENDING` until the\nnewly required MX record (the apex MX, or the wildcard `*.<domain>`) is\npublished and verified.", + "properties": { + "feedback_enabled": { + "description": "Bounce and complaint notifications are sent to your inboxes.", + "title": "FeedbackEnabled", + "type": "boolean" + }, + "inbound_enabled": { + "description": "Receive email for this domain. Defaults to `true`. Set `false` for a send-only\ndomain: the apex MX record is not required and is omitted from `records`, so the\ndomain's existing email provider keeps receiving its mail. Inboxes on a send-only\ndomain can still send.", + "title": "InboundEnabled", + "type": "boolean" + }, + "subdomains_enabled": { + "description": "Allow inboxes on any subdomain of this domain. Adds a required wildcard MX\nrecord (`*.<domain>`) to `records`.", + "title": "SubdomainsEnabled", + "type": "boolean" + }, + "tracking_enabled": { + "description": "Serve open tracking pixels from this domain. Adds a required `link.<domain>`\nCNAME record to `records`, which must be published and verified before\n`track_opens` can be used on a send.", + "title": "TrackingEnabled", + "type": "boolean" + } + }, + "title": "UpdateDomainRequest", + "type": "object" +} - removed
Input schema / properties / feedback_enabledRemoved value: -{ - "description": "Bounce and complaint notifications are sent to your inboxes.", - "title": "FeedbackEnabled", - "type": "boolean" -} - removed
Input schema / properties / inbound_enabledRemoved value: -{ - "description": "Receive email for this domain. Defaults to `true`. Set `false` for a send-only\ndomain: the apex MX record is not required and is omitted from `records`, so the\ndomain's existing email provider keeps receiving its mail. Inboxes on a send-only\ndomain can still send.", - "title": "InboundEnabled", - "type": "boolean" -} - removed
Input schema / properties / subdomains_enabledRemoved value: -{ - "description": "Allow inboxes on any subdomain of this domain. Adds a required wildcard MX\nrecord (`*.<domain>`) to `records`.", - "title": "SubdomainsEnabled", - "type": "boolean" -} - removed
Input schema / properties / tracking_enabledRemoved value: -{ - "description": "Serve open tracking pixels from this domain. Adds a required `link.<domain>`\nCNAME record to `records`, which must be published and verified before\n`track_opens` can be used on a send.", - "title": "TrackingEnabled", - "type": "boolean" -}
- Changed
patch_any_agentmail_apis_v1_agentmail_inboxes_inb_9e18e84 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "description": "Rename a credential or change its permissions. Key material, type,\nscope, and expiry are immutable.", + "properties": { + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + } + }, + "title": "UpdateApiKeyRequest", + "type": "object" +} - removed
Input schema / properties / nameRemoved value: -{ - "description": "Name of api key.", - "title": "Name", - "type": "string" -} - removed
Input schema / properties / permissionsRemoved value: -{ - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" -}
- Changed
post_agentmail_inbox8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "client_id": { + "description": "Client ID of inbox.", + "title": "ClientId", + "type": "string" + }, + "display_name": { + "description": "Display name: `Display Name <username@domain.com>`.", + "title": "DisplayName", + "type": "string" + }, + "domain": { + "description": "Domain of address. Must be a verified domain, or any subdomain of a\nverified domain that has subdomains enabled (e.g., `bot.example.com`).\nDefaults to `agentmail.to`.", + "type": "string" + }, + "metadata": { + "additionalProperties": { + "description": "A metadata value. May be a string, number, or boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "format": "double", + "type": "number" + }, + { + "type": "boolean" + } + ], + "title": "MetadataValue" + }, + "description": "Custom metadata to attach to the inbox.", + "title": "Metadata", + "type": "object" + }, + "status": { + "description": "Set `paused` to create the inbox paused.", + "enum": [ + "active", + "paused" + ], + "title": "InboxStatus", + "type": "string" + }, + "username": { + "description": "Username of address. Randomly generated if not specified.", + "type": "string" + } + }, + "title": "CreateInboxRequest", + "type": "object" +} - removed
Input schema / properties / client_idRemoved value: -{ - "description": "Client ID of inbox.", - "title": "ClientId", - "type": "string" -} - removed
Input schema / properties / display_nameRemoved value: -{ - "description": "Display name: `Display Name <username@domain.com>`.", - "title": "DisplayName", - "type": "string" -} - removed
Input schema / properties / domainRemoved value: -{ - "description": "Domain of address. Must be a verified domain, or any subdomain of a\nverified domain that has subdomains enabled (e.g., `bot.example.com`).\nDefaults to `agentmail.to`.", - "type": "string" -} - removed
Input schema / properties / metadataRemoved value: -{ - "additionalProperties": { - "description": "A metadata value. May be a string, number, or boolean.", - "oneOf": [ - { - "type": "string" - }, - { - "format": "double", - "type": "number" - }, - { - "type": "boolean" - } - ], - "title": "MetadataValue" - }, - "description": "Custom metadata to attach to the inbox.", - "title": "Metadata", - "type": "object" -} - removed
Input schema / properties / statusRemoved value: -{ - "description": "Set `paused` to create the inbox paused.", - "enum": [ - "active", - "paused" - ], - "title": "InboxStatus", - "type": "string" -} - removed
Input schema / properties / usernameRemoved value: -{ - "description": "Username of address. Randomly generated if not specified.", - "type": "string" -}
- Changed
post_agentmail_inbox_draft16 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / attachmentsRemoved value: -{ - "description": "Attachments to include in draft.", - "items": { - "description": "Provide either `content` or `url` for each attachment.", - "properties": { - "content": { - "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", - "type": "string" - }, - "content_disposition": { - "description": "Content disposition of attachment.", - "enum": [ - "inline", - "attachment" - ], - "title": "AttachmentContentDisposition", - "type": "string" - }, - "content_id": { - "description": "Content ID of attachment.", - "title": "AttachmentContentId", - "type": "string" - }, - "content_type": { - "description": "Content type of attachment.", - "title": "AttachmentContentType", - "type": "string" - }, - "filename": { - "description": "Filename of attachment.", - "title": "AttachmentFilename", - "type": "string" - }, - "url": { - "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", - "type": "string" - } - }, - "title": "SendAttachment", - "type": "object" - }, - "type": "array" -} - removed
Input schema / properties / bccRemoved value: -{ - "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftBcc", - "type": "array" -} - added
Input schema / properties / bodyAdded value: +{ + "description": "Body for creating a draft. Supports plain, reply, reply-all, and forward\ndrafts:\n\n- **Plain draft:** supply `to`, `subject`, `text`, etc.\n- **Reply:** set `in_reply_to` to a message ID. Recipients, subject, and\n threading are derived from that message. Set `reply_all` to address the\n whole thread (you then cannot also pass `to`, `cc`, or `bcc`).\n- **Forward:** set `forward_of` to a message ID. The subject and threading\n are derived from the source message, whose body and attachments are\n merged in at send time.\n\n`in_reply_to` and `forward_of` are mutually exclusive, and reading the\nreferenced message requires `message_read` permission.", + "properties": { + "attachments": { + "description": "Attachments to include in draft.", + "items": { + "description": "Provide either `content` or `url` for each attachment.", + "properties": { + "content": { + "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", + "type": "string" + }, + "content_disposition": { + "description": "Content disposition of attachment.", + "enum": [ + "inline", + "attachment" + ], + "title": "AttachmentContentDisposition", + "type": "string" + }, + "content_id": { + "description": "Content ID of attachment.", + "title": "AttachmentContentId", + "type": "string" + }, + "content_type": { + "description": "Content type of attachment.", + "title": "AttachmentContentType", + "type": "string" + }, + "filename": { + "description": "Filename of attachment.", + "title": "AttachmentFilename", + "type": "string" + }, + "url": { + "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", + "type": "string" + } + }, + "title": "SendAttachment", + "type": "object" + }, + "type": "array" + }, + "bcc": { + "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftBcc", + "type": "array" + }, + "cc": { + "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftCc", + "type": "array" + }, + "client_id": { + "description": "Client ID of draft.", + "title": "DraftClientId", + "type": "string" + }, + "forward_of": { + "description": "ID of message being forwarded.", + "title": "DraftForwardOf", + "type": "string" + }, + "html": { + "description": "HTML body of draft.", + "title": "DraftHtml", + "type": "string" + }, + "in_reply_to": { + "description": "ID of message being replied to.", + "title": "DraftInReplyTo", + "type": "string" + }, + "labels": { + "description": "Labels of draft.", + "items": { + "type": "string" + }, + "title": "DraftLabels", + "type": "array" + }, + "reply_all": { + "description": "Reply to all recipients of the original message.", + "title": "DraftReplyAll", + "type": "boolean" + }, + "reply_to": { + "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftReplyTo", + "type": "array" + }, + "send_at": { + "description": "Time at which to schedule send draft.", + "format": "date-time", + "title": "DraftSendAt", + "type": "string" + }, + "subject": { + "description": "Subject of draft.", + "title": "DraftSubject", + "type": "string" + }, + "text": { + "description": "Plain text body of draft.", + "title": "DraftText", + "type": "string" + }, + "to": { + "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftTo", + "type": "array" + } + }, + "title": "CreateDraftRequest", + "type": "object" +} - removed
Input schema / properties / ccRemoved value: -{ - "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftCc", - "type": "array" -} - removed
Input schema / properties / client_idRemoved value: -{ - "description": "Client ID of draft.", - "title": "DraftClientId", - "type": "string" -} - removed
Input schema / properties / forward_ofRemoved value: -{ - "description": "ID of message being forwarded.", - "title": "DraftForwardOf", - "type": "string" -} - removed
Input schema / properties / htmlRemoved value: -{ - "description": "HTML body of draft.", - "title": "DraftHtml", - "type": "string" -} - removed
Input schema / properties / in_reply_toRemoved value: -{ - "description": "ID of message being replied to.", - "title": "DraftInReplyTo", - "type": "string" -} - removed
Input schema / properties / labelsRemoved value: -{ - "description": "Labels of draft.", - "items": { - "type": "string" - }, - "title": "DraftLabels", - "type": "array" -} - removed
Input schema / properties / reply_allRemoved value: -{ - "description": "Reply to all recipients of the original message.", - "title": "DraftReplyAll", - "type": "boolean" -} - removed
Input schema / properties / reply_toRemoved value: -{ - "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftReplyTo", - "type": "array" -} - removed
Input schema / properties / send_atRemoved value: -{ - "description": "Time at which to schedule send draft.", - "format": "date-time", - "title": "DraftSendAt", - "type": "string" -} - removed
Input schema / properties / subjectRemoved value: -{ - "description": "Subject of draft.", - "title": "DraftSubject", - "type": "string" -} - removed
Input schema / properties / textRemoved value: -{ - "description": "Plain text body of draft.", - "title": "DraftText", - "type": "string" -} - removed
Input schema / properties / toRemoved value: -{ - "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftTo", - "type": "array" -}
- Changed
post_agentmail_inbox_draft_send4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / add_labelsRemoved value: -{ - "description": "Label or labels to add to message.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "UpdateMessageLabels" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "add_labels": { + "description": "Label or labels to add to message.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "UpdateMessageLabels" + }, + "remove_labels": { + "description": "Label or labels to remove from message.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "UpdateMessageLabels" + } + }, + "title": "UpdateMessageRequest", + "type": "object" +} - removed
Input schema / properties / remove_labelsRemoved value: -{ - "description": "Label or labels to remove from message.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "UpdateMessageLabels" -}
- Changed
post_agentmail_inbox_list_entry5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / allOfRemoved value: -[ - { - "if": { - "anyOf": [ - { - "properties": { - "entry": { - "not": { - "type": "null" - } - } - }, - "required": [ - "entry" - ] - }, - { - "properties": { - "reason": { - "not": { - "type": "null" - } - } - }, - "required": [ - "reason" - ] - } - ] - }, - "then": { - "properties": { - "entry": { - "not": { - "type": "null" - } - } - }, - "required": [ - "entry" - ] - } - } -] - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "entry": { + "description": "Email address or domain to add.", + "type": "string" + }, + "reason": { + "description": "Reason for adding the entry.", + "type": "string" + } + }, + "required": [ + "entry" + ], + "title": "CreateListEntryRequest", + "type": "object" +} - removed
Input schema / properties / entryRemoved value: -{ - "description": "Email address or domain to add.", - "type": "string" -} - removed
Input schema / properties / reasonRemoved value: -{ - "description": "Reason for adding the entry.", - "type": "string" -}
- Changed
post_agentmail_inbox_message_forward13 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / attachmentsRemoved value: -{ - "description": "Attachments to include in message.", - "items": { - "description": "Provide either `content` or `url` for each attachment.", - "properties": { - "content": { - "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", - "type": "string" - }, - "content_disposition": { - "description": "Content disposition of attachment.", - "enum": [ - "inline", - "attachment" - ], - "title": "AttachmentContentDisposition", - "type": "string" - }, - "content_id": { - "description": "Content ID of attachment.", - "title": "AttachmentContentId", - "type": "string" - }, - "content_type": { - "description": "Content type of attachment.", - "title": "AttachmentContentType", - "type": "string" - }, - "filename": { - "description": "Filename of attachment.", - "title": "AttachmentFilename", - "type": "string" - }, - "url": { - "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", - "type": "string" - } - }, - "title": "SendAttachment", - "type": "object" - }, - "title": "SendMessageAttachments", - "type": "array" -} - removed
Input schema / properties / bccRemoved value: -{ - "description": "BCC recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageBcc" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "attachments": { + "description": "Attachments to include in message.", + "items": { + "description": "Provide either `content` or `url` for each attachment.", + "properties": { + "content": { + "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", + "type": "string" + }, + "content_disposition": { + "description": "Content disposition of attachment.", + "enum": [ + "inline", + "attachment" + ], + "title": "AttachmentContentDisposition", + "type": "string" + }, + "content_id": { + "description": "Content ID of attachment.", + "title": "AttachmentContentId", + "type": "string" + }, + "content_type": { + "description": "Content type of attachment.", + "title": "AttachmentContentType", + "type": "string" + }, + "filename": { + "description": "Filename of attachment.", + "title": "AttachmentFilename", + "type": "string" + }, + "url": { + "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", + "type": "string" + } + }, + "title": "SendAttachment", + "type": "object" + }, + "title": "SendMessageAttachments", + "type": "array" + }, + "bcc": { + "description": "BCC recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageBcc" + }, + "cc": { + "description": "CC recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageCc" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "Headers to include in message.", + "title": "SendMessageHeaders", + "type": "object" + }, + "html": { + "description": "HTML body of message.", + "title": "MessageHtml", + "type": "string" + }, + "labels": { + "description": "Labels of message.", + "items": { + "type": "string" + }, + "title": "MessageLabels", + "type": "array" + }, + "reply_to": { + "description": "Reply-to address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageReplyTo" + }, + "subject": { + "description": "Subject of message.", + "title": "MessageSubject", + "type": "string" + }, + "text": { + "description": "Plain text body of message.", + "title": "MessageText", + "type": "string" + }, + "to": { + "description": "Recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageTo" + }, + "track_opens": { + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" + } + }, + "title": "SendMessageRequest", + "type": "object" +} - removed
Input schema / properties / ccRemoved value: -{ - "description": "CC recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageCc" -} - removed
Input schema / properties / headersRemoved value: -{ - "additionalProperties": { - "type": "string" - }, - "description": "Headers to include in message.", - "title": "SendMessageHeaders", - "type": "object" -} - removed
Input schema / properties / htmlRemoved value: -{ - "description": "HTML body of message.", - "title": "MessageHtml", - "type": "string" -} - removed
Input schema / properties / labelsRemoved value: -{ - "description": "Labels of message.", - "items": { - "type": "string" - }, - "title": "MessageLabels", - "type": "array" -} - removed
Input schema / properties / reply_toRemoved value: -{ - "description": "Reply-to address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageReplyTo" -} - removed
Input schema / properties / subjectRemoved value: -{ - "description": "Subject of message.", - "title": "MessageSubject", - "type": "string" -} - removed
Input schema / properties / textRemoved value: -{ - "description": "Plain text body of message.", - "title": "MessageText", - "type": "string" -} - removed
Input schema / properties / toRemoved value: -{ - "description": "Recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageTo" -} - removed
Input schema / properties / track_opensRemoved value: -{ - "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", - "title": "TrackOpens", - "type": "boolean" -}
- Changed
post_agentmail_inbox_message_reply13 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / attachmentsRemoved value: -{ - "description": "Attachments to include in message.", - "items": { - "description": "Provide either `content` or `url` for each attachment.", - "properties": { - "content": { - "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", - "type": "string" - }, - "content_disposition": { - "description": "Content disposition of attachment.", - "enum": [ - "inline", - "attachment" - ], - "title": "AttachmentContentDisposition", - "type": "string" - }, - "content_id": { - "description": "Content ID of attachment.", - "title": "AttachmentContentId", - "type": "string" - }, - "content_type": { - "description": "Content type of attachment.", - "title": "AttachmentContentType", - "type": "string" - }, - "filename": { - "description": "Filename of attachment.", - "title": "AttachmentFilename", - "type": "string" - }, - "url": { - "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", - "type": "string" - } - }, - "title": "SendAttachment", - "type": "object" - }, - "title": "SendMessageAttachments", - "type": "array" -} - removed
Input schema / properties / bccRemoved value: -{ - "description": "BCC recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageBcc" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "attachments": { + "description": "Attachments to include in message.", + "items": { + "description": "Provide either `content` or `url` for each attachment.", + "properties": { + "content": { + "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", + "type": "string" + }, + "content_disposition": { + "description": "Content disposition of attachment.", + "enum": [ + "inline", + "attachment" + ], + "title": "AttachmentContentDisposition", + "type": "string" + }, + "content_id": { + "description": "Content ID of attachment.", + "title": "AttachmentContentId", + "type": "string" + }, + "content_type": { + "description": "Content type of attachment.", + "title": "AttachmentContentType", + "type": "string" + }, + "filename": { + "description": "Filename of attachment.", + "title": "AttachmentFilename", + "type": "string" + }, + "url": { + "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", + "type": "string" + } + }, + "title": "SendAttachment", + "type": "object" + }, + "title": "SendMessageAttachments", + "type": "array" + }, + "bcc": { + "description": "BCC recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageBcc" + }, + "cc": { + "description": "CC recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageCc" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "Headers to include in message.", + "title": "SendMessageHeaders", + "type": "object" + }, + "html": { + "description": "HTML body of message.", + "title": "MessageHtml", + "type": "string" + }, + "labels": { + "description": "Labels of message.", + "items": { + "type": "string" + }, + "title": "MessageLabels", + "type": "array" + }, + "reply_all": { + "description": "Reply to all recipients of the original message.", + "title": "ReplyAll", + "type": "boolean" + }, + "reply_to": { + "description": "Reply-to address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageReplyTo" + }, + "text": { + "description": "Plain text body of message.", + "title": "MessageText", + "type": "string" + }, + "to": { + "description": "Recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageTo" + }, + "track_opens": { + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" + } + }, + "title": "ReplyToMessageRequest", + "type": "object" +} - removed
Input schema / properties / ccRemoved value: -{ - "description": "CC recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageCc" -} - removed
Input schema / properties / headersRemoved value: -{ - "additionalProperties": { - "type": "string" - }, - "description": "Headers to include in message.", - "title": "SendMessageHeaders", - "type": "object" -} - removed
Input schema / properties / htmlRemoved value: -{ - "description": "HTML body of message.", - "title": "MessageHtml", - "type": "string" -} - removed
Input schema / properties / labelsRemoved value: -{ - "description": "Labels of message.", - "items": { - "type": "string" - }, - "title": "MessageLabels", - "type": "array" -} - removed
Input schema / properties / reply_allRemoved value: -{ - "description": "Reply to all recipients of the original message.", - "title": "ReplyAll", - "type": "boolean" -} - removed
Input schema / properties / reply_toRemoved value: -{ - "description": "Reply-to address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageReplyTo" -} - removed
Input schema / properties / textRemoved value: -{ - "description": "Plain text body of message.", - "title": "MessageText", - "type": "string" -} - removed
Input schema / properties / toRemoved value: -{ - "description": "Recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageTo" -} - removed
Input schema / properties / track_opensRemoved value: -{ - "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", - "title": "TrackOpens", - "type": "boolean" -}
- Changed
post_agentmail_inbox_message_reply_all9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / attachmentsRemoved value: -{ - "description": "Attachments to include in message.", - "items": { - "description": "Provide either `content` or `url` for each attachment.", - "properties": { - "content": { - "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", - "type": "string" - }, - "content_disposition": { - "description": "Content disposition of attachment.", - "enum": [ - "inline", - "attachment" - ], - "title": "AttachmentContentDisposition", - "type": "string" - }, - "content_id": { - "description": "Content ID of attachment.", - "title": "AttachmentContentId", - "type": "string" - }, - "content_type": { - "description": "Content type of attachment.", - "title": "AttachmentContentType", - "type": "string" - }, - "filename": { - "description": "Filename of attachment.", - "title": "AttachmentFilename", - "type": "string" - }, - "url": { - "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", - "type": "string" - } - }, - "title": "SendAttachment", - "type": "object" - }, - "title": "SendMessageAttachments", - "type": "array" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "attachments": { + "description": "Attachments to include in message.", + "items": { + "description": "Provide either `content` or `url` for each attachment.", + "properties": { + "content": { + "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", + "type": "string" + }, + "content_disposition": { + "description": "Content disposition of attachment.", + "enum": [ + "inline", + "attachment" + ], + "title": "AttachmentContentDisposition", + "type": "string" + }, + "content_id": { + "description": "Content ID of attachment.", + "title": "AttachmentContentId", + "type": "string" + }, + "content_type": { + "description": "Content type of attachment.", + "title": "AttachmentContentType", + "type": "string" + }, + "filename": { + "description": "Filename of attachment.", + "title": "AttachmentFilename", + "type": "string" + }, + "url": { + "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", + "type": "string" + } + }, + "title": "SendAttachment", + "type": "object" + }, + "title": "SendMessageAttachments", + "type": "array" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "Headers to include in message.", + "title": "SendMessageHeaders", + "type": "object" + }, + "html": { + "description": "HTML body of message.", + "title": "MessageHtml", + "type": "string" + }, + "labels": { + "description": "Labels of message.", + "items": { + "type": "string" + }, + "title": "MessageLabels", + "type": "array" + }, + "reply_to": { + "description": "Reply-to address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageReplyTo" + }, + "text": { + "description": "Plain text body of message.", + "title": "MessageText", + "type": "string" + }, + "track_opens": { + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" + } + }, + "title": "ReplyAllMessageRequest", + "type": "object" +} - removed
Input schema / properties / headersRemoved value: -{ - "additionalProperties": { - "type": "string" - }, - "description": "Headers to include in message.", - "title": "SendMessageHeaders", - "type": "object" -} - removed
Input schema / properties / htmlRemoved value: -{ - "description": "HTML body of message.", - "title": "MessageHtml", - "type": "string" -} - removed
Input schema / properties / labelsRemoved value: -{ - "description": "Labels of message.", - "items": { - "type": "string" - }, - "title": "MessageLabels", - "type": "array" -} - removed
Input schema / properties / reply_toRemoved value: -{ - "description": "Reply-to address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageReplyTo" -} - removed
Input schema / properties / textRemoved value: -{ - "description": "Plain text body of message.", - "title": "MessageText", - "type": "string" -} - removed
Input schema / properties / track_opensRemoved value: -{ - "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", - "title": "TrackOpens", - "type": "boolean" -}
- Changed
post_agentmail_inbox_message_send13 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / attachmentsRemoved value: -{ - "description": "Attachments to include in message.", - "items": { - "description": "Provide either `content` or `url` for each attachment.", - "properties": { - "content": { - "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", - "type": "string" - }, - "content_disposition": { - "description": "Content disposition of attachment.", - "enum": [ - "inline", - "attachment" - ], - "title": "AttachmentContentDisposition", - "type": "string" - }, - "content_id": { - "description": "Content ID of attachment.", - "title": "AttachmentContentId", - "type": "string" - }, - "content_type": { - "description": "Content type of attachment.", - "title": "AttachmentContentType", - "type": "string" - }, - "filename": { - "description": "Filename of attachment.", - "title": "AttachmentFilename", - "type": "string" - }, - "url": { - "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", - "type": "string" - } - }, - "title": "SendAttachment", - "type": "object" - }, - "title": "SendMessageAttachments", - "type": "array" -} - removed
Input schema / properties / bccRemoved value: -{ - "description": "BCC recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageBcc" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "attachments": { + "description": "Attachments to include in message.", + "items": { + "description": "Provide either `content` or `url` for each attachment.", + "properties": { + "content": { + "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", + "type": "string" + }, + "content_disposition": { + "description": "Content disposition of attachment.", + "enum": [ + "inline", + "attachment" + ], + "title": "AttachmentContentDisposition", + "type": "string" + }, + "content_id": { + "description": "Content ID of attachment.", + "title": "AttachmentContentId", + "type": "string" + }, + "content_type": { + "description": "Content type of attachment.", + "title": "AttachmentContentType", + "type": "string" + }, + "filename": { + "description": "Filename of attachment.", + "title": "AttachmentFilename", + "type": "string" + }, + "url": { + "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", + "type": "string" + } + }, + "title": "SendAttachment", + "type": "object" + }, + "title": "SendMessageAttachments", + "type": "array" + }, + "bcc": { + "description": "BCC recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageBcc" + }, + "cc": { + "description": "CC recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageCc" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "Headers to include in message.", + "title": "SendMessageHeaders", + "type": "object" + }, + "html": { + "description": "HTML body of message.", + "title": "MessageHtml", + "type": "string" + }, + "labels": { + "description": "Labels of message.", + "items": { + "type": "string" + }, + "title": "MessageLabels", + "type": "array" + }, + "reply_to": { + "description": "Reply-to address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageReplyTo" + }, + "subject": { + "description": "Subject of message.", + "title": "MessageSubject", + "type": "string" + }, + "text": { + "description": "Plain text body of message.", + "title": "MessageText", + "type": "string" + }, + "to": { + "description": "Recipient address or addresses.", + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "title": "SendMessageTo" + }, + "track_opens": { + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" + } + }, + "title": "SendMessageRequest", + "type": "object" +} - removed
Input schema / properties / ccRemoved value: -{ - "description": "CC recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageCc" -} - removed
Input schema / properties / headersRemoved value: -{ - "additionalProperties": { - "type": "string" - }, - "description": "Headers to include in message.", - "title": "SendMessageHeaders", - "type": "object" -} - removed
Input schema / properties / htmlRemoved value: -{ - "description": "HTML body of message.", - "title": "MessageHtml", - "type": "string" -} - removed
Input schema / properties / labelsRemoved value: -{ - "description": "Labels of message.", - "items": { - "type": "string" - }, - "title": "MessageLabels", - "type": "array" -} - removed
Input schema / properties / reply_toRemoved value: -{ - "description": "Reply-to address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageReplyTo" -} - removed
Input schema / properties / subjectRemoved value: -{ - "description": "Subject of message.", - "title": "MessageSubject", - "type": "string" -} - removed
Input schema / properties / textRemoved value: -{ - "description": "Plain text body of message.", - "title": "MessageText", - "type": "string" -} - removed
Input schema / properties / toRemoved value: -{ - "description": "Recipient address or addresses.", - "oneOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "title": "SendMessageTo" -} - removed
Input schema / properties / track_opensRemoved value: -{ - "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", - "title": "TrackOpens", - "type": "boolean" -}
- Changed
post_agentmail_list_entry5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / allOfRemoved value: -[ - { - "if": { - "anyOf": [ - { - "properties": { - "entry": { - "not": { - "type": "null" - } - } - }, - "required": [ - "entry" - ] - }, - { - "properties": { - "reason": { - "not": { - "type": "null" - } - } - }, - "required": [ - "reason" - ] - } - ] - }, - "then": { - "properties": { - "entry": { - "not": { - "type": "null" - } - } - }, - "required": [ - "entry" - ] - } - } -] - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "entry": { + "description": "Email address or domain to add.", + "type": "string" + }, + "reason": { + "description": "Reason for adding the entry.", + "type": "string" + } + }, + "required": [ + "entry" + ], + "title": "CreateListEntryRequest", + "type": "object" +} - removed
Input schema / properties / entryRemoved value: -{ - "description": "Email address or domain to add.", - "type": "string" -} - removed
Input schema / properties / reasonRemoved value: -{ - "description": "Reason for adding the entry.", - "type": "string" -}
- Changed
post_any_agentmail_apis_v1_agentmail_inboxes_inbo_5d0d223 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "description": "A body with `public_key` registers a public-key credential; any other\nbody mints a bearer key.", + "oneOf": [ + { + "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.", + "properties": { + "expires_at": { + "description": "Time at which api key expires. Omitted when it does not expire.", + "format": "date-time", + "title": "ExpiresAt", + "type": "string" + }, + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + } + }, + "title": "CreateBearerApiKeyRequest", + "type": "object" + }, + { + "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.", + "properties": { + "client_id": { + "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.", + "title": "PublicKeyClientId", + "type": "string" + }, + "expires_at": { + "description": "Time at which api key expires. Omitted when it does not expire.", + "format": "date-time", + "title": "ExpiresAt", + "type": "string" + }, + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + }, + "public_key": { + "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.", + "properties": { + "crv": { + "enum": [ + "P-256" + ], + "type": "string" + }, + "kty": { + "enum": [ + "EC" + ], + "type": "string" + }, + "x": { + "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", + "maxLength": 43, + "minLength": 43, + "pattern": "^[A-Za-z0-9_-]{43}$", + "title": "PublicJwkCoordinate", + "type": "string" + }, + "y": { + "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", + "maxLength": 43, + "minLength": 43, + "pattern": "^[A-Za-z0-9_-]{43}$", + "title": "PublicJwkCoordinate", + "type": "string" + } + }, + "required": [ + "kty", + "crv", + "x", + "y" + ], + "title": "PublicJwk", + "type": "object" + } + }, + "required": [ + "public_key" + ], + "title": "CreatePublicKeyRequest", + "type": "object" + } + ], + "title": "CreateApiKeyRequest" +} - removed
Input schema / properties / createapikeyrequestRemoved value: -{ - "description": "A body with `public_key` registers a public-key credential; any other\nbody mints a bearer key.", - "oneOf": [ - { - "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.", - "properties": { - "expires_at": { - "description": "Time at which api key expires. Omitted when it does not expire.", - "format": "date-time", - "title": "ExpiresAt", - "type": "string" - }, - "name": { - "description": "Name of api key.", - "title": "Name", - "type": "string" - }, - "permissions": { - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" - } - }, - "title": "CreateBearerApiKeyRequest", - "type": "object" - }, - { - "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.", - "properties": { - "client_id": { - "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.", - "title": "PublicKeyClientId", - "type": "string" - }, - "expires_at": { - "description": "Time at which api key expires. Omitted when it does not expire.", - "format": "date-time", - "title": "ExpiresAt", - "type": "string" - }, - "name": { - "description": "Name of api key.", - "title": "Name", - "type": "string" - }, - "permissions": { - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" - }, - "public_key": { - "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.", - "properties": { - "crv": { - "enum": [ - "P-256" - ], - "type": "string" - }, - "kty": { - "enum": [ - "EC" - ], - "type": "string" - }, - "x": { - "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", - "maxLength": 43, - "minLength": 43, - "pattern": "^[A-Za-z0-9_-]{43}$", - "title": "PublicJwkCoordinate", - "type": "string" - }, - "y": { - "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", - "maxLength": 43, - "minLength": 43, - "pattern": "^[A-Za-z0-9_-]{43}$", - "title": "PublicJwkCoordinate", - "type": "string" - } - }, - "required": [ - "kty", - "crv", - "x", - "y" - ], - "title": "PublicJwk", - "type": "object" - } - }, - "required": [ - "public_key" - ], - "title": "CreatePublicKeyRequest", - "type": "object" - } - ], - "title": "CreateApiKeyRequest" -}
- Changed
post_get_agentmail_api_keys3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "description": "A body with `public_key` registers a public-key credential; any other\nbody mints a bearer key.", + "oneOf": [ + { + "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.", + "properties": { + "expires_at": { + "description": "Time at which api key expires. Omitted when it does not expire.", + "format": "date-time", + "title": "ExpiresAt", + "type": "string" + }, + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + } + }, + "title": "CreateBearerApiKeyRequest", + "type": "object" + }, + { + "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.", + "properties": { + "client_id": { + "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.", + "title": "PublicKeyClientId", + "type": "string" + }, + "expires_at": { + "description": "Time at which api key expires. Omitted when it does not expire.", + "format": "date-time", + "title": "ExpiresAt", + "type": "string" + }, + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + }, + "public_key": { + "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.", + "properties": { + "crv": { + "enum": [ + "P-256" + ], + "type": "string" + }, + "kty": { + "enum": [ + "EC" + ], + "type": "string" + }, + "x": { + "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", + "maxLength": 43, + "minLength": 43, + "pattern": "^[A-Za-z0-9_-]{43}$", + "title": "PublicJwkCoordinate", + "type": "string" + }, + "y": { + "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", + "maxLength": 43, + "minLength": 43, + "pattern": "^[A-Za-z0-9_-]{43}$", + "title": "PublicJwkCoordinate", + "type": "string" + } + }, + "required": [ + "kty", + "crv", + "x", + "y" + ], + "title": "PublicJwk", + "type": "object" + } + }, + "required": [ + "public_key" + ], + "title": "CreatePublicKeyRequest", + "type": "object" + } + ], + "title": "CreateApiKeyRequest" +} - removed
Input schema / properties / createapikeyrequestRemoved value: -{ - "description": "A body with `public_key` registers a public-key credential; any other\nbody mints a bearer key.", - "oneOf": [ - { - "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.", - "properties": { - "expires_at": { - "description": "Time at which api key expires. Omitted when it does not expire.", - "format": "date-time", - "title": "ExpiresAt", - "type": "string" - }, - "name": { - "description": "Name of api key.", - "title": "Name", - "type": "string" - }, - "permissions": { - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" - } - }, - "title": "CreateBearerApiKeyRequest", - "type": "object" - }, - { - "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.", - "properties": { - "client_id": { - "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.", - "title": "PublicKeyClientId", - "type": "string" - }, - "expires_at": { - "description": "Time at which api key expires. Omitted when it does not expire.", - "format": "date-time", - "title": "ExpiresAt", - "type": "string" - }, - "name": { - "description": "Name of api key.", - "title": "Name", - "type": "string" - }, - "permissions": { - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" - }, - "public_key": { - "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.", - "properties": { - "crv": { - "enum": [ - "P-256" - ], - "type": "string" - }, - "kty": { - "enum": [ - "EC" - ], - "type": "string" - }, - "x": { - "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", - "maxLength": 43, - "minLength": 43, - "pattern": "^[A-Za-z0-9_-]{43}$", - "title": "PublicJwkCoordinate", - "type": "string" - }, - "y": { - "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", - "maxLength": 43, - "minLength": 43, - "pattern": "^[A-Za-z0-9_-]{43}$", - "title": "PublicJwkCoordinate", - "type": "string" - } - }, - "required": [ - "kty", - "crv", - "x", - "y" - ], - "title": "PublicJwk", - "type": "object" - } - }, - "required": [ - "public_key" - ], - "title": "CreatePublicKeyRequest", - "type": "object" - } - ], - "title": "CreateApiKeyRequest" -}
- Changed
post_get_agentmail_domains9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / allOfRemoved value: -[ - { - "if": { - "anyOf": [ - { - "properties": { - "allow_conflicting_provider": { - "not": { - "type": "null" - } - } - }, - "required": [ - "allow_conflicting_provider" - ] - }, - { - "properties": { - "domain": { - "not": { - "type": "null" - } - } - }, - "required": [ - "domain" - ] - }, - { - "properties": { - "feedback_enabled": { - "not": { - "type": "null" - } - } - }, - "required": [ - "feedback_enabled" - ] - }, - { - "properties": { - "inbound_enabled": { - "not": { - "type": "null" - } - } - }, - "required": [ - "inbound_enabled" - ] - }, - { - "properties": { - "subdomains_enabled": { - "not": { - "type": "null" - } - } - }, - "required": [ - "subdomains_enabled" - ] - }, - { - "properties": { - "tracking_enabled": { - "not": { - "type": "null" - } - } - }, - "required": [ - "tracking_enabled" - ] - } - ] - }, - "then": { - "properties": { - "domain": { - "not": { - "type": "null" - } - } - }, - "required": [ - "domain" - ] - } - } -] - removed
Input schema / properties / allow_conflicting_providerRemoved value: -{ - "description": "Allow registration when the domain already has Google Workspace MX records.\nDefaults to false; registration otherwise returns 422 when a conflicting\nprovider is detected.\nThis flag does not configure DNS or inbound routing. For shared Google\nWorkspace domains, follow the [Google Workspace guide](/google-workspace).\nOnly checked when `inbound_enabled` is true; a send-only domain skips the check.", - "type": "boolean" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "allow_conflicting_provider": { + "description": "Allow registration when the domain already has Google Workspace MX records.\nDefaults to false; registration otherwise returns 422 when a conflicting\nprovider is detected.\nThis flag does not configure DNS or inbound routing. For shared Google\nWorkspace domains, follow the [Google Workspace guide](/google-workspace).\nOnly checked when `inbound_enabled` is true; a send-only domain skips the check.", + "type": "boolean" + }, + "domain": { + "description": "The name of the domain (e.g., `example.com`).", + "title": "DomainName", + "type": "string" + }, + "feedback_enabled": { + "description": "Bounce and complaint notifications are sent to your inboxes.", + "title": "FeedbackEnabled", + "type": "boolean" + }, + "inbound_enabled": { + "description": "Receive email for this domain. Defaults to `true`. Set `false` for a send-only\ndomain: the apex MX record is not required and is omitted from `records`, so the\ndomain's existing email provider keeps receiving its mail. Inboxes on a send-only\ndomain can still send.", + "title": "InboundEnabled", + "type": "boolean" + }, + "subdomains_enabled": { + "description": "Allow inboxes on any subdomain of this domain. Adds a required wildcard MX\nrecord (`*.<domain>`) to `records`.", + "title": "SubdomainsEnabled", + "type": "boolean" + }, + "tracking_enabled": { + "description": "Serve open tracking pixels from this domain. Adds a required `link.<domain>`\nCNAME record to `records`, which must be published and verified before\n`track_opens` can be used on a send.", + "title": "TrackingEnabled", + "type": "boolean" + } + }, + "required": [ + "domain" + ], + "title": "CreateDomainRequest", + "type": "object" +} - removed
Input schema / properties / domainRemoved value: -{ - "description": "The name of the domain (e.g., `example.com`).", - "title": "DomainName", - "type": "string" -} - removed
Input schema / properties / feedback_enabledRemoved value: -{ - "description": "Bounce and complaint notifications are sent to your inboxes.", - "title": "FeedbackEnabled", - "type": "boolean" -} - removed
Input schema / properties / inbound_enabledRemoved value: -{ - "description": "Receive email for this domain. Defaults to `true`. Set `false` for a send-only\ndomain: the apex MX record is not required and is omitted from `records`, so the\ndomain's existing email provider keeps receiving its mail. Inboxes on a send-only\ndomain can still send.", - "title": "InboundEnabled", - "type": "boolean" -} - removed
Input schema / properties / subdomains_enabledRemoved value: -{ - "description": "Allow inboxes on any subdomain of this domain. Adds a required wildcard MX\nrecord (`*.<domain>`) to `records`.", - "title": "SubdomainsEnabled", - "type": "boolean" -} - removed
Input schema / properties / tracking_enabledRemoved value: -{ - "description": "Serve open tracking pixels from this domain. Adds a required `link.<domain>`\nCNAME record to `records`, which must be published and verified before\n`track_opens` can be used on a send.", - "title": "TrackingEnabled", - "type": "boolean" -}
14 tool updates
- Changed
patch_agentmail_inbox2 fields changed- removed
Input schema / properties / metadata / anyOfRemoved value: -[ - { - "additionalProperties": { - "anyOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "format": "double", - "type": "number" - }, - { - "type": "boolean" - } - ], - "description": "A metadata value. May be a string, number, or boolean.", - "title": "MetadataValue" - }, - { - "type": "null" - } - ] - }, - "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", - "title": "UpdateMetadata", - "type": "object" - }, - { - "type": "null" - } -] - added
Input schema / properties / metadata / oneOfAdded value: +[ + { + "additionalProperties": { + "oneOf": [ + { + "description": "A metadata value. May be a string, number, or boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "format": "double", + "type": "number" + }, + { + "type": "boolean" + } + ], + "title": "MetadataValue" + }, + { + "type": "null" + } + ] + }, + "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", + "title": "UpdateMetadata", + "type": "object" + }, + { + "type": "null" + } +]
- Changed
patch_agentmail_inbox_draft16 fields changed- removed
Input schema / properties / bcc / anyOfRemoved value: -[ - { - "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftBcc", - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / bcc / oneOfAdded value: +[ + { + "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftBcc", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / cc / anyOfRemoved value: -[ - { - "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftCc", - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / cc / oneOfAdded value: +[ + { + "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftCc", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / html / anyOfRemoved value: -[ - { - "description": "HTML body of draft.", - "title": "DraftHtml", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / html / oneOfAdded value: +[ + { + "description": "HTML body of draft.", + "title": "DraftHtml", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / reply_to / anyOfRemoved value: -[ - { - "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftReplyTo", - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / reply_to / oneOfAdded value: +[ + { + "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftReplyTo", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / send_at / anyOfRemoved value: -[ - { - "description": "Time at which to schedule send draft.", - "format": "date-time", - "title": "DraftSendAt", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / send_at / oneOfAdded value: +[ + { + "description": "Time at which to schedule send draft.", + "format": "date-time", + "title": "DraftSendAt", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / subject / anyOfRemoved value: -[ - { - "description": "Subject of draft.", - "title": "DraftSubject", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / subject / oneOfAdded value: +[ + { + "description": "Subject of draft.", + "title": "DraftSubject", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / text / anyOfRemoved value: -[ - { - "description": "Plain text body of draft.", - "title": "DraftText", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / text / oneOfAdded value: +[ + { + "description": "Plain text body of draft.", + "title": "DraftText", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / to / anyOfRemoved value: -[ - { - "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftTo", - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / to / oneOfAdded value: +[ + { + "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftTo", + "type": "array" + }, + { + "type": "null" + } +]
- Changed
patch_agentmail_inbox_message4 fields changed- removed
Input schema / properties / add_labels / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / add_labels / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / remove_labels / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / remove_labels / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +]
- Changed
post_agentmail_inbox2 fields changed- removed
Input schema / properties / metadata / additionalProperties / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "format": "double", - "type": "number" - }, - { - "type": "boolean" - } -] - added
Input schema / properties / metadata / additionalProperties / oneOfAdded value: +[ + { + "type": "string" + }, + { + "format": "double", + "type": "number" + }, + { + "type": "boolean" + } +]
- Changed
post_agentmail_inbox_draft_send4 fields changed- removed
Input schema / properties / add_labels / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / add_labels / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / remove_labels / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / remove_labels / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +]
- Changed
post_agentmail_inbox_list_entry1 field changed- added
Input schema / allOfAdded value: +[ + { + "if": { + "anyOf": [ + { + "properties": { + "entry": { + "not": { + "type": "null" + } + } + }, + "required": [ + "entry" + ] + }, + { + "properties": { + "reason": { + "not": { + "type": "null" + } + } + }, + "required": [ + "reason" + ] + } + ] + }, + "then": { + "properties": { + "entry": { + "not": { + "type": "null" + } + } + }, + "required": [ + "entry" + ] + } + } +]
- Changed
post_agentmail_inbox_message_forward8 fields changed- removed
Input schema / properties / bcc / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / bcc / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / cc / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / cc / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / reply_to / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / reply_to / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / to / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / to / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +]
- Changed
post_agentmail_inbox_message_reply8 fields changed- removed
Input schema / properties / bcc / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / bcc / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / cc / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / cc / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / reply_to / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / reply_to / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / to / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / to / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +]
- Changed
post_agentmail_inbox_message_reply_all2 fields changed- removed
Input schema / properties / reply_to / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / reply_to / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +]
- Changed
post_agentmail_inbox_message_send8 fields changed- removed
Input schema / properties / bcc / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / bcc / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / cc / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / cc / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / reply_to / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / reply_to / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / to / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / to / oneOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +]
- Changed
post_agentmail_list_entry1 field changed- added
Input schema / allOfAdded value: +[ + { + "if": { + "anyOf": [ + { + "properties": { + "entry": { + "not": { + "type": "null" + } + } + }, + "required": [ + "entry" + ] + }, + { + "properties": { + "reason": { + "not": { + "type": "null" + } + } + }, + "required": [ + "reason" + ] + } + ] + }, + "then": { + "properties": { + "entry": { + "not": { + "type": "null" + } + } + }, + "required": [ + "entry" + ] + } + } +]
- Changed
post_any_agentmail_apis_v1_agentmail_inboxes_inbo_5d0d222 fields changed- removed
Input schema / properties / createapikeyrequest / anyOfRemoved value: -[ - { - "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.", - "properties": { - "expires_at": { - "description": "Time at which api key expires. Omitted when it does not expire.", - "format": "date-time", - "title": "ExpiresAt", - "type": "string" - }, - "name": { - "description": "Name of api key.", - "title": "Name", - "type": "string" - }, - "permissions": { - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" - } - }, - "title": "CreateBearerApiKeyRequest", - "type": "object" - }, - { - "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.", - "properties": { - "client_id": { - "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.", - "title": "PublicKeyClientId", - "type": "string" - }, - "expires_at": { - "description": "Time at which api key expires. Omitted when it does not expire.", - "format": "date-time", - "title": "ExpiresAt", - "type": "string" - }, - "name": { - "description": "Name of api key.", - "title": "Name", - "type": "string" - }, - "permissions": { - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" - }, - "public_key": { - "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.", - "properties": { - "crv": { - "enum": [ - "P-256" - ], - "type": "string" - }, - "kty": { - "enum": [ - "EC" - ], - "type": "string" - }, - "x": { - "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", - "maxLength": 43, - "minLength": 43, - "pattern": "^[A-Za-z0-9_-]{43}$", - "title": "PublicJwkCoordinate", - "type": "string" - }, - "y": { - "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", - "maxLength": 43, - "minLength": 43, - "pattern": "^[A-Za-z0-9_-]{43}$", - "title": "PublicJwkCoordinate", - "type": "string" - } - }, - "required": [ - "kty", - "crv", - "x", - "y" - ], - "title": "PublicJwk", - "type": "object" - } - }, - "required": [ - "public_key" - ], - "title": "CreatePublicKeyRequest", - "type": "object" - } -] - added
Input schema / properties / createapikeyrequest / oneOfAdded value: +[ + { + "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.", + "properties": { + "expires_at": { + "description": "Time at which api key expires. Omitted when it does not expire.", + "format": "date-time", + "title": "ExpiresAt", + "type": "string" + }, + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + } + }, + "title": "CreateBearerApiKeyRequest", + "type": "object" + }, + { + "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.", + "properties": { + "client_id": { + "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.", + "title": "PublicKeyClientId", + "type": "string" + }, + "expires_at": { + "description": "Time at which api key expires. Omitted when it does not expire.", + "format": "date-time", + "title": "ExpiresAt", + "type": "string" + }, + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + }, + "public_key": { + "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.", + "properties": { + "crv": { + "enum": [ + "P-256" + ], + "type": "string" + }, + "kty": { + "enum": [ + "EC" + ], + "type": "string" + }, + "x": { + "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", + "maxLength": 43, + "minLength": 43, + "pattern": "^[A-Za-z0-9_-]{43}$", + "title": "PublicJwkCoordinate", + "type": "string" + }, + "y": { + "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", + "maxLength": 43, + "minLength": 43, + "pattern": "^[A-Za-z0-9_-]{43}$", + "title": "PublicJwkCoordinate", + "type": "string" + } + }, + "required": [ + "kty", + "crv", + "x", + "y" + ], + "title": "PublicJwk", + "type": "object" + } + }, + "required": [ + "public_key" + ], + "title": "CreatePublicKeyRequest", + "type": "object" + } +]
- Changed
post_get_agentmail_api_keys2 fields changed- removed
Input schema / properties / createapikeyrequest / anyOfRemoved value: -[ - { - "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.", - "properties": { - "expires_at": { - "description": "Time at which api key expires. Omitted when it does not expire.", - "format": "date-time", - "title": "ExpiresAt", - "type": "string" - }, - "name": { - "description": "Name of api key.", - "title": "Name", - "type": "string" - }, - "permissions": { - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" - } - }, - "title": "CreateBearerApiKeyRequest", - "type": "object" - }, - { - "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.", - "properties": { - "client_id": { - "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.", - "title": "PublicKeyClientId", - "type": "string" - }, - "expires_at": { - "description": "Time at which api key expires. Omitted when it does not expire.", - "format": "date-time", - "title": "ExpiresAt", - "type": "string" - }, - "name": { - "description": "Name of api key.", - "title": "Name", - "type": "string" - }, - "permissions": { - "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", - "properties": { - "account_update": { - "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", - "type": "boolean" - }, - "api_key_create": { - "description": "Create API keys.", - "type": "boolean" - }, - "api_key_delete": { - "description": "Delete API keys.", - "type": "boolean" - }, - "api_key_read": { - "description": "Read API keys.", - "type": "boolean" - }, - "api_key_update": { - "description": "Update API keys.", - "type": "boolean" - }, - "app_connect": { - "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", - "type": "boolean" - }, - "app_share_owner": { - "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", - "type": "boolean" - }, - "calendar_event_create": { - "description": "Create calendar events.", - "type": "boolean" - }, - "calendar_event_delete": { - "description": "Delete calendar events.", - "type": "boolean" - }, - "calendar_event_read": { - "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", - "type": "boolean" - }, - "calendar_event_update": { - "description": "Update calendar events and respond to invitations.", - "type": "boolean" - }, - "calendar_read": { - "description": "Read inbox calendar settings.", - "type": "boolean" - }, - "calendar_update": { - "description": "Update inbox calendar settings.", - "type": "boolean" - }, - "domain_create": { - "description": "Create domains.", - "type": "boolean" - }, - "domain_delete": { - "description": "Delete domains.", - "type": "boolean" - }, - "domain_read": { - "description": "Read domain details.", - "type": "boolean" - }, - "domain_update": { - "description": "Update domains.", - "type": "boolean" - }, - "draft_create": { - "description": "Create drafts.", - "type": "boolean" - }, - "draft_delete": { - "description": "Delete drafts.", - "type": "boolean" - }, - "draft_read": { - "description": "Read drafts.", - "type": "boolean" - }, - "draft_send": { - "description": "Send drafts.", - "type": "boolean" - }, - "draft_update": { - "description": "Update drafts.", - "type": "boolean" - }, - "inbox_create": { - "description": "Create new inboxes.", - "type": "boolean" - }, - "inbox_delete": { - "description": "Delete inboxes.", - "type": "boolean" - }, - "inbox_read": { - "description": "Read inbox details.", - "type": "boolean" - }, - "inbox_update": { - "description": "Update inbox settings.", - "type": "boolean" - }, - "label_blocked_read": { - "description": "Access messages labeled blocked.", - "type": "boolean" - }, - "label_spam_read": { - "description": "Access messages labeled spam.", - "type": "boolean" - }, - "label_trash_read": { - "description": "Access messages labeled trash.", - "type": "boolean" - }, - "label_unauthenticated_read": { - "description": "Access messages labeled unauthenticated.", - "type": "boolean" - }, - "list_entry_create": { - "description": "Create list entries.", - "type": "boolean" - }, - "list_entry_delete": { - "description": "Delete list entries.", - "type": "boolean" - }, - "list_entry_read": { - "description": "Read list entries.", - "type": "boolean" - }, - "message_delete": { - "description": "Delete messages. Also required to delete threads.", - "type": "boolean" - }, - "message_read": { - "description": "Read messages. Also required to read threads.", - "type": "boolean" - }, - "message_reply": { - "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", - "type": "boolean" - }, - "message_send": { - "description": "Send messages.", - "type": "boolean" - }, - "message_update": { - "description": "Update message labels. Also required to update threads.", - "type": "boolean" - }, - "metrics_read": { - "description": "Read metrics.", - "type": "boolean" - }, - "pod_create": { - "description": "Create pods.", - "type": "boolean" - }, - "pod_delete": { - "description": "Delete pods.", - "type": "boolean" - }, - "pod_read": { - "description": "Read pods.", - "type": "boolean" - }, - "pod_update": { - "description": "Update pods.", - "type": "boolean" - }, - "webhook_create": { - "description": "Create webhooks.", - "type": "boolean" - }, - "webhook_delete": { - "description": "Delete webhooks.", - "type": "boolean" - }, - "webhook_read": { - "description": "Read webhook configurations.", - "type": "boolean" - }, - "webhook_update": { - "description": "Update webhooks.", - "type": "boolean" - } - }, - "title": "ApiKeyPermissions", - "type": "object" - }, - "public_key": { - "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.", - "properties": { - "crv": { - "enum": [ - "P-256" - ], - "type": "string" - }, - "kty": { - "enum": [ - "EC" - ], - "type": "string" - }, - "x": { - "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", - "maxLength": 43, - "minLength": 43, - "pattern": "^[A-Za-z0-9_-]{43}$", - "title": "PublicJwkCoordinate", - "type": "string" - }, - "y": { - "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", - "maxLength": 43, - "minLength": 43, - "pattern": "^[A-Za-z0-9_-]{43}$", - "title": "PublicJwkCoordinate", - "type": "string" - } - }, - "required": [ - "kty", - "crv", - "x", - "y" - ], - "title": "PublicJwk", - "type": "object" - } - }, - "required": [ - "public_key" - ], - "title": "CreatePublicKeyRequest", - "type": "object" - } -] - added
Input schema / properties / createapikeyrequest / oneOfAdded value: +[ + { + "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.", + "properties": { + "expires_at": { + "description": "Time at which api key expires. Omitted when it does not expire.", + "format": "date-time", + "title": "ExpiresAt", + "type": "string" + }, + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + } + }, + "title": "CreateBearerApiKeyRequest", + "type": "object" + }, + { + "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.", + "properties": { + "client_id": { + "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.", + "title": "PublicKeyClientId", + "type": "string" + }, + "expires_at": { + "description": "Time at which api key expires. Omitted when it does not expire.", + "format": "date-time", + "title": "ExpiresAt", + "type": "string" + }, + "name": { + "description": "Name of api key.", + "title": "Name", + "type": "string" + }, + "permissions": { + "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.", + "properties": { + "account_update": { + "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.", + "type": "boolean" + }, + "api_key_create": { + "description": "Create API keys.", + "type": "boolean" + }, + "api_key_delete": { + "description": "Delete API keys.", + "type": "boolean" + }, + "api_key_read": { + "description": "Read API keys.", + "type": "boolean" + }, + "api_key_update": { + "description": "Update API keys.", + "type": "boolean" + }, + "app_connect": { + "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.", + "type": "boolean" + }, + "app_share_owner": { + "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.", + "type": "boolean" + }, + "calendar_event_create": { + "description": "Create calendar events.", + "type": "boolean" + }, + "calendar_event_delete": { + "description": "Delete calendar events.", + "type": "boolean" + }, + "calendar_event_read": { + "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.", + "type": "boolean" + }, + "calendar_event_update": { + "description": "Update calendar events and respond to invitations.", + "type": "boolean" + }, + "calendar_read": { + "description": "Read inbox calendar settings.", + "type": "boolean" + }, + "calendar_update": { + "description": "Update inbox calendar settings.", + "type": "boolean" + }, + "domain_create": { + "description": "Create domains.", + "type": "boolean" + }, + "domain_delete": { + "description": "Delete domains.", + "type": "boolean" + }, + "domain_read": { + "description": "Read domain details.", + "type": "boolean" + }, + "domain_update": { + "description": "Update domains.", + "type": "boolean" + }, + "draft_create": { + "description": "Create drafts.", + "type": "boolean" + }, + "draft_delete": { + "description": "Delete drafts.", + "type": "boolean" + }, + "draft_read": { + "description": "Read drafts.", + "type": "boolean" + }, + "draft_send": { + "description": "Send drafts.", + "type": "boolean" + }, + "draft_update": { + "description": "Update drafts.", + "type": "boolean" + }, + "inbox_create": { + "description": "Create new inboxes.", + "type": "boolean" + }, + "inbox_delete": { + "description": "Delete inboxes.", + "type": "boolean" + }, + "inbox_read": { + "description": "Read inbox details.", + "type": "boolean" + }, + "inbox_update": { + "description": "Update inbox settings.", + "type": "boolean" + }, + "label_blocked_read": { + "description": "Access messages labeled blocked.", + "type": "boolean" + }, + "label_spam_read": { + "description": "Access messages labeled spam.", + "type": "boolean" + }, + "label_trash_read": { + "description": "Access messages labeled trash.", + "type": "boolean" + }, + "label_unauthenticated_read": { + "description": "Access messages labeled unauthenticated.", + "type": "boolean" + }, + "list_entry_create": { + "description": "Create list entries.", + "type": "boolean" + }, + "list_entry_delete": { + "description": "Delete list entries.", + "type": "boolean" + }, + "list_entry_read": { + "description": "Read list entries.", + "type": "boolean" + }, + "message_delete": { + "description": "Delete messages. Also required to delete threads.", + "type": "boolean" + }, + "message_read": { + "description": "Read messages. Also required to read threads.", + "type": "boolean" + }, + "message_reply": { + "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.", + "type": "boolean" + }, + "message_send": { + "description": "Send messages.", + "type": "boolean" + }, + "message_update": { + "description": "Update message labels. Also required to update threads.", + "type": "boolean" + }, + "metrics_read": { + "description": "Read metrics.", + "type": "boolean" + }, + "pod_create": { + "description": "Create pods.", + "type": "boolean" + }, + "pod_delete": { + "description": "Delete pods.", + "type": "boolean" + }, + "pod_read": { + "description": "Read pods.", + "type": "boolean" + }, + "pod_update": { + "description": "Update pods.", + "type": "boolean" + }, + "webhook_create": { + "description": "Create webhooks.", + "type": "boolean" + }, + "webhook_delete": { + "description": "Delete webhooks.", + "type": "boolean" + }, + "webhook_read": { + "description": "Read webhook configurations.", + "type": "boolean" + }, + "webhook_update": { + "description": "Update webhooks.", + "type": "boolean" + } + }, + "title": "ApiKeyPermissions", + "type": "object" + }, + "public_key": { + "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.", + "properties": { + "crv": { + "enum": [ + "P-256" + ], + "type": "string" + }, + "kty": { + "enum": [ + "EC" + ], + "type": "string" + }, + "x": { + "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", + "maxLength": 43, + "minLength": 43, + "pattern": "^[A-Za-z0-9_-]{43}$", + "title": "PublicJwkCoordinate", + "type": "string" + }, + "y": { + "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.", + "maxLength": 43, + "minLength": 43, + "pattern": "^[A-Za-z0-9_-]{43}$", + "title": "PublicJwkCoordinate", + "type": "string" + } + }, + "required": [ + "kty", + "crv", + "x", + "y" + ], + "title": "PublicJwk", + "type": "object" + } + }, + "required": [ + "public_key" + ], + "title": "CreatePublicKeyRequest", + "type": "object" + } +]
- Changed
post_get_agentmail_domains1 field changed- added
Input schema / allOfAdded value: +[ + { + "if": { + "anyOf": [ + { + "properties": { + "allow_conflicting_provider": { + "not": { + "type": "null" + } + } + }, + "required": [ + "allow_conflicting_provider" + ] + }, + { + "properties": { + "domain": { + "not": { + "type": "null" + } + } + }, + "required": [ + "domain" + ] + }, + { + "properties": { + "feedback_enabled": { + "not": { + "type": "null" + } + } + }, + "required": [ + "feedback_enabled" + ] + }, + { + "properties": { + "inbound_enabled": { + "not": { + "type": "null" + } + } + }, + "required": [ + "inbound_enabled" + ] + }, + { + "properties": { + "subdomains_enabled": { + "not": { + "type": "null" + } + } + }, + "required": [ + "subdomains_enabled" + ] + }, + { + "properties": { + "tracking_enabled": { + "not": { + "type": "null" + } + } + }, + "required": [ + "tracking_enabled" + ] + } + ] + }, + "then": { + "properties": { + "domain": { + "not": { + "type": "null" + } + } + }, + "required": [ + "domain" + ] + } + } +]
69 tool updates
- Added
any_agentmail_apis_v1_agentmail_domains_domain_id_725bd7 - Added
any_agentmail_apis_v1_agentmail_domains_domain_id_verify - Added
batch_get_schema - Added
batch_quote - Changed
batch_use18 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / calls / descriptionRemoved value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - added
Input schema / properties / calls / items / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / properties / calls / items / propertiesAdded value: +{ + "arguments": { + "additionalProperties": true, + "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", + "type": "object" + }, + "call_id": { + "description": "Caller-chosen identifier unique within this batch.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "tool": { + "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / calls / items / requiredAdded value: +[ + "call_id", + "tool", + "arguments" +] - added
Input schema / properties / calls / maxItemsAdded value: +20 - added
Input schema / properties / calls / minItemsAdded value: +1 - removed
Input schema / properties / max_price_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Per-call price cap applied to every item" -} - removed
Input schema / properties / search_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / search_id / defaultRemoved value: -null - changed
Input schema / properties / search_id / descriptionPrevious value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search." - added
Input schema / properties / search_id / typeAdded value: +"string" - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / $defsAdded value: +{ + "jsonValue": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/jsonValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/$defs/jsonValue" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "JSON value returned by the upstream tool." + } +} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / propertiesAdded value: +{ + "batch_id": { + "type": "string" + }, + "error_count": { + "minimum": 0, + "type": "integer" + }, + "next_steps_guidance": { + "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "call_id": { + "type": "string" + }, + "customer_cost_micros_usd": { + "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", + "minimum": 0, + "type": "integer" + }, + "data": { + "$ref": "#/$defs/jsonValue" + }, + "error": { + "anyOf": [ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "status": { + "type": "integer" + }, + "type": { + "enum": [ + "validation", + "authentication", + "payment", + "permission", + "rate_limit", + "upstream", + "timeout", + "internal" + ], + "type": "string" + } + }, + "required": [ + "type", + "status", + "retryable" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "request_id": { + "type": "string" + }, + "successful": { + "type": "boolean" + }, + "tool": { + "type": "string" + }, + "upstream_status": { + "description": "HTTP status returned by AIsaServices when a request was dispatched.", + "type": "integer" + } + }, + "required": [ + "call_id", + "tool", + "successful", + "request_id" + ], + "type": "object" + }, + "type": "array" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" + }, + "success_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "minimum": 1, + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "session_id", + "batch_id", + "total_count", + "success_count", + "error_count", + "results", + "next_steps_guidance" +]
- Changed
delete_agentmail_inbox2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
delete_agentmail_inbox_draft2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "Authorization" -]New value: +[ + "draft_id", + "inbox_id" +]
- Changed
delete_agentmail_inbox_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "direction", - "type", - "entry", - "Authorization" -]New value: +[ + "direction", + "entry", + "inbox_id", + "type" +]
- Changed
delete_agentmail_inbox_message2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
delete_agentmail_inbox_thread3 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - removed
Input schema / properties / permanentRemoved value: -{ - "description": "If true, permanently delete the thread instead of moving to trash.", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id", - "Authorization" -]New value: +[ + "inbox_id", + "thread_id" +]
- Changed
delete_agentmail_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type", - "entry", - "Authorization" -]New value: +[ + "direction", + "entry", + "type" +]
- Changed
delete_agentmail_thread3 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - removed
Input schema / properties / permanentRemoved value: -{ - "description": "If true, permanently delete the thread instead of moving to trash.", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "thread_id", - "Authorization" -]New value: +[ + "thread_id" +]
- Added
delete_any_agentmail_apis_v1_agentmail_api_keys_a_3ff578 - Added
delete_any_agentmail_apis_v1_agentmail_domains_domain_id - Added
delete_any_agentmail_apis_v1_agentmail_inboxes_in_4ef7af - Changed
get_agentmail_draft2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "draft_id", - "Authorization" -]New value: +[ + "draft_id" +]
- Changed
get_agentmail_draft_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "draft_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "draft_id" +]
- Changed
get_agentmail_drafts2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Changed
get_agentmail_inbox2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
get_agentmail_inbox_draft2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "Authorization" -]New value: +[ + "draft_id", + "inbox_id" +]
- Changed
get_agentmail_inbox_draft_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "draft_id", + "inbox_id" +]
- Changed
get_agentmail_inbox_drafts2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
get_agentmail_inbox_events2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
get_agentmail_inbox_list_entries2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "direction", - "type", - "Authorization" -]New value: +[ + "direction", + "inbox_id", + "type" +]
- Changed
get_agentmail_inbox_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "direction", - "type", - "entry", - "Authorization" -]New value: +[ + "direction", + "entry", + "inbox_id", + "type" +]
- Changed
get_agentmail_inbox_message2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
get_agentmail_inbox_message_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "inbox_id", + "message_id" +]
- Changed
get_agentmail_inbox_message_raw2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
get_agentmail_inbox_messages5 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / fromAdded value: +{ + "description": "Filter to messages whose sender contains this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / subjectAdded value: +{ + "description": "Filter to messages whose subject contains this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / toAdded value: +{ + "description": "Filter to messages whose recipients (to, cc, or bcc) contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Removed
get_agentmail_inbox_messages_search - Changed
get_agentmail_inbox_metrics2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
get_agentmail_inbox_thread4 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / limitAdded value: +{ + "description": "Limit of number of items returned.", + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / page_tokenAdded value: +{ + "description": "Page token for pagination.", + "title": "PageToken", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id", - "Authorization" -]New value: +[ + "inbox_id", + "thread_id" +]
- Changed
get_agentmail_inbox_thread_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "inbox_id", + "thread_id" +]
- Changed
get_agentmail_inbox_threads5 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / recipientsAdded value: +{ + "description": "Filter to threads whose recipients contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / sendersAdded value: +{ + "description": "Filter to threads whose senders contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / subjectAdded value: +{ + "description": "Filter to threads whose subject contains this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Removed
get_agentmail_inbox_threads_search - Changed
get_agentmail_inboxes2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Changed
get_agentmail_list_entries2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type", - "Authorization" -]New value: +[ + "direction", + "type" +]
- Changed
get_agentmail_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type", - "entry", - "Authorization" -]New value: +[ + "direction", + "entry", + "type" +]
- Changed
get_agentmail_metrics2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Changed
get_agentmail_thread4 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / limitAdded value: +{ + "description": "Limit of number of items returned.", + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / page_tokenAdded value: +{ + "description": "Page token for pagination.", + "title": "PageToken", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "thread_id", - "Authorization" -]New value: +[ + "thread_id" +]
- Changed
get_agentmail_thread_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "thread_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "thread_id" +]
- Changed
get_agentmail_threads5 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / recipientsAdded value: +{ + "description": "Filter to threads whose recipients contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / sendersAdded value: +{ + "description": "Filter to threads whose senders contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / subjectAdded value: +{ + "description": "Filter to threads whose subject contains this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Removed
get_agentmail_threads_search - Added
get_any_agentmail_apis_v1_agentmail_api_keys_api_key_id - Added
get_any_agentmail_apis_v1_agentmail_domains_domain_id - Added
get_any_agentmail_apis_v1_agentmail_inboxes_inbox_81bd1e - Changed
get_details13 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." -} - added
Input schema / properties / include_arguments_schemaAdded value: +{ + "default": true, + "description": "Return the complete arguments_schema. Defaults to true.", + "type": "boolean" +} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged."New value: +"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support." - added
Input schema / properties / include_response_schemaAdded value: +{ + "default": false, + "description": "Return the complete response_schema. Defaults to false.", + "type": "boolean" +} - removed
Input schema / properties / operation_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "One operation_id from search" -} - removed
Input schema / properties / operation_idsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Up to 20 operation_ids, for a batch" -} - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", + "items": { + "minLength": 1, + "pattern": "^\\S(?:.*\\S)?$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - removed
Input schema / properties / with_quoteRemoved value: -{ - "default": true, - "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", - "type": "boolean" -} - added
Input schema / requiredAdded value: +[ + "tools" +] - added
Output schema / propertiesAdded value: +{ + "error_count": { + "type": "integer" + }, + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "success_count": { + "type": "integer" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "canonical_operation_id": { + "type": "string" + }, + "documentation": { + "additionalProperties": true, + "type": "object" + }, + "error": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ] + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "idempotent": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "read_only": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "response_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "side_effects": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "successful" + ], + "type": "object" + }, + "type": "object" + }, + "total_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "error_count", + "next_steps_guidance", + "session_id", + "success_count", + "tools", + "total_count" +]
- Changed
patch_agentmail_inbox5 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / properties / metadata / anyOfPrevious value: -[ - { - "allOf": [ - { - "additionalProperties": { - "anyOf": [ - { - "allOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "format": "double", - "type": "number" - }, - { - "type": "boolean" - } - ], - "description": "A metadata value. May be a string, number, or boolean.", - "title": "MetadataValue" - } - ] - }, - { - "type": "null" - } - ] - }, - "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", - "title": "UpdateMetadata", - "type": "object" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "format": "double", + "type": "number" + }, + { + "type": "boolean" + } + ], + "description": "A metadata value. May be a string, number, or boolean.", + "title": "MetadataValue" + }, + { + "type": "null" + } + ] + }, + "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", + "title": "UpdateMetadata", + "type": "object" + }, + { + "type": "null" + } +] - changed
Input schema / properties / metadata / descriptionPrevious value: -"Metadata to merge into the inbox's existing metadata. Keys you include\nare added or overwritten; keys you omit are left unchanged. To remove a\nsingle key, send it with a null value. To clear all metadata, send\n`metadata` as null. Sending an empty object is rejected; use null to\nclear. Each update must include at least one of `display_name` or\n`metadata`."New value: +"Metadata to merge into the inbox's existing metadata. Keys you include\nare added or overwritten; keys you omit are left unchanged. To remove a\nsingle key, send it with a null value. To clear all metadata, send\n`metadata` as null. Sending an empty object is rejected; use null to\nclear. Each update must include at least one of `display_name`,\n`status`, or `metadata`." - added
Input schema / properties / statusAdded value: +{ + "description": "`paused` stops the inbox sending and receiving mail; `active` resumes\nit. Mail that arrived while the inbox was paused is not delivered on\nresume.", + "enum": [ + "active", + "paused" + ], + "title": "InboxStatus", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
patch_agentmail_inbox_draft43 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / add_attachmentsAdded value: +{ + "description": "Attachments to add to the draft.", + "items": { + "description": "Provide either `content` or `url` for each attachment.", + "properties": { + "content": { + "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", + "type": "string" + }, + "content_disposition": { + "description": "Content disposition of attachment.", + "enum": [ + "inline", + "attachment" + ], + "title": "AttachmentContentDisposition", + "type": "string" + }, + "content_id": { + "description": "Content ID of attachment.", + "title": "AttachmentContentId", + "type": "string" + }, + "content_type": { + "description": "Content type of attachment.", + "title": "AttachmentContentType", + "type": "string" + }, + "filename": { + "description": "Filename of attachment.", + "title": "AttachmentFilename", + "type": "string" + }, + "url": { + "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", + "type": "string" + } + }, + "title": "SendAttachment", + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / add_labelsAdded value: +{ + "description": "Label or labels to add to the draft.", + "items": { + "type": "string" + }, + "title": "DraftLabels", + "type": "array" +} - added
Input schema / properties / bcc / anyOfAdded value: +[ + { + "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftBcc", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / bcc / descriptionRemoved value: -"Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - removed
Input schema / properties / bcc / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / bcc / titleRemoved value: -"DraftBcc" - removed
Input schema / properties / bcc / typeRemoved value: -"array" - added
Input schema / properties / cc / anyOfAdded value: +[ + { + "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftCc", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / cc / descriptionRemoved value: -"Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - removed
Input schema / properties / cc / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / cc / titleRemoved value: -"DraftCc" - removed
Input schema / properties / cc / typeRemoved value: -"array" - added
Input schema / properties / html / anyOfAdded value: +[ + { + "description": "HTML body of draft.", + "title": "DraftHtml", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / html / descriptionRemoved value: -"HTML body of draft." - removed
Input schema / properties / html / titleRemoved value: -"DraftHtml" - removed
Input schema / properties / html / typeRemoved value: -"string" - added
Input schema / properties / remove_attachmentsAdded value: +{ + "description": "IDs of attachments to remove from the draft.", + "items": { + "description": "ID of attachment.", + "title": "AttachmentId", + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / remove_labelsAdded value: +{ + "description": "Label or labels to remove from the draft.", + "items": { + "type": "string" + }, + "title": "DraftLabels", + "type": "array" +} - added
Input schema / properties / reply_to / anyOfAdded value: +[ + { + "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftReplyTo", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / reply_to / descriptionRemoved value: -"Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`." - removed
Input schema / properties / reply_to / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / reply_to / titleRemoved value: -"DraftReplyTo" - removed
Input schema / properties / reply_to / typeRemoved value: -"array" - added
Input schema / properties / send_at / anyOfAdded value: +[ + { + "description": "Time at which to schedule send draft.", + "format": "date-time", + "title": "DraftSendAt", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / send_at / descriptionRemoved value: -"Time at which to schedule send draft." - removed
Input schema / properties / send_at / formatRemoved value: -"date-time" - removed
Input schema / properties / send_at / titleRemoved value: -"DraftSendAt" - removed
Input schema / properties / send_at / typeRemoved value: -"string" - added
Input schema / properties / subject / anyOfAdded value: +[ + { + "description": "Subject of draft.", + "title": "DraftSubject", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / subject / descriptionRemoved value: -"Subject of draft." - removed
Input schema / properties / subject / titleRemoved value: -"DraftSubject" - removed
Input schema / properties / subject / typeRemoved value: -"string" - added
Input schema / properties / text / anyOfAdded value: +[ + { + "description": "Plain text body of draft.", + "title": "DraftText", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / text / descriptionRemoved value: -"Plain text body of draft." - removed
Input schema / properties / text / titleRemoved value: -"DraftText" - removed
Input schema / properties / text / typeRemoved value: -"string" - added
Input schema / properties / to / anyOfAdded value: +[ + { + "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftTo", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / to / descriptionRemoved value: -"Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - removed
Input schema / properties / to / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / to / titleRemoved value: -"DraftTo" - removed
Input schema / properties / to / typeRemoved value: -"array" - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "Authorization" -]New value: +[ + "draft_id", + "inbox_id" +]
- Changed
patch_agentmail_inbox_message2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
patch_agentmail_inbox_thread2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id", - "Authorization" -]New value: +[ + "inbox_id", + "thread_id" +]
- Changed
patch_agentmail_thread2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "thread_id", - "Authorization" -]New value: +[ + "thread_id" +]
- Added
patch_any_agentmail_apis_v1_agentmail_api_keys_ap_294dbb - Added
patch_any_agentmail_apis_v1_agentmail_domains_domain_id - Added
patch_any_agentmail_apis_v1_agentmail_inboxes_inb_9e18e8 - Changed
post_agentmail_inbox4 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / properties / domain / descriptionPrevious value: -"Domain of address. Must be verified domain. Defaults to `agentmail.to`."New value: +"Domain of address. Must be a verified domain, or any subdomain of a\nverified domain that has subdomains enabled (e.g., `bot.example.com`).\nDefaults to `agentmail.to`." - added
Input schema / properties / statusAdded value: +{ + "description": "Set `paused` to create the inbox paused.", + "enum": [ + "active", + "paused" + ], + "title": "InboxStatus", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Changed
post_agentmail_inbox_draft7 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / forward_ofAdded value: +{ + "description": "ID of message being forwarded.", + "title": "DraftForwardOf", + "type": "string" +} - added
Input schema / properties / reply_allAdded value: +{ + "description": "Reply to all recipients of the original message.", + "title": "DraftReplyAll", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
post_agentmail_inbox_draft_send2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "Authorization" -]New value: +[ + "draft_id", + "inbox_id" +]
- Changed
post_agentmail_inbox_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "direction", - "type", - "Authorization" -]New value: +[ + "direction", + "inbox_id", + "type" +]
- Changed
post_agentmail_inbox_message_forward6 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / track_opensAdded value: +{ + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
post_agentmail_inbox_message_reply6 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / track_opensAdded value: +{ + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
post_agentmail_inbox_message_reply_all6 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / track_opensAdded value: +{ + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
post_agentmail_inbox_message_send6 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / track_opensAdded value: +{ + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
post_agentmail_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type", - "Authorization" -]New value: +[ + "direction", + "type" +]
- Added
post_any_agentmail_apis_v1_agentmail_inboxes_inbo_5d0d22 - Added
post_get_agentmail_api_keys - Added
post_get_agentmail_domains - Changed
search17 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "enum": [ - "seo", - "finance", - "social", - "search", - "sales", - "mail" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything."New value: +"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)" - added
Input schema / properties / category / enumAdded value: +[ + "seo", + "finance", + "social", + "search", + "sales", + "mail" +] - added
Input schema / properties / category / typeAdded value: +"string" - added
Input schema / properties / known_fieldsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", + "type": "object" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates." - added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / provider_filtersAdded value: +{ + "default": [], + "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", + "items": { + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / query / descriptionPrevious value: -"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best."New value: +"Natural-language capability or task to discover." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / propertiesAdded value: +{ + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "canonical_use_case": { + "type": "string" + }, + "description": { + "type": "string" + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan_ref": { + "type": "string" + }, + "primary_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "recommended_steps": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "related_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + } + }, + "required": [ + "canonical_use_case", + "description", + "known_pitfalls", + "plan_ref", + "primary_tools", + "recommended_steps", + "related_tools" + ] + }, + "retrieval_mode": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "search_id": { + "type": "string" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "description": { + "type": "string" + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "has_full_schema": { + "type": "boolean" + }, + "match_reasons": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "price": { + "additionalProperties": true, + "type": "object" + }, + "retrieval_debug": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "fused_rank": { + "type": "integer" + }, + "fused_score": { + "type": "number" + }, + "lexical_rank": { + "type": "integer" + }, + "lexical_score": { + "type": "number" + }, + "rerank_admission_rank": { + "type": "integer" + }, + "rerank_rank": { + "type": "integer" + }, + "rerank_score": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] + }, + "runtime_availability": { + "type": "string" + }, + "vector_view_ranks": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "vector_view_scores": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "fused_rank", + "fused_score", + "lexical_rank", + "lexical_score", + "rerank_admission_rank", + "rerank_rank", + "runtime_availability", + "vector_view_ranks", + "vector_view_scores" + ] + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "description", + "has_full_schema", + "price", + "summary", + "tool" + ], + "type": "object" + } + } +} - added
Output schema / requiredAdded value: +[ + "next_steps_guidance", + "search_id", + "session_id", + "tools" +]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if it would cost more than this many USD"New value: +"Refuse the call before any spend if its quoted price is above this many USD"
69 tool updates
- Removed
any_agentmail_apis_v1_agentmail_domains_domain_id_725bd7 - Removed
any_agentmail_apis_v1_agentmail_domains_domain_id_verify - Removed
batch_get_schema - Removed
batch_quote - Changed
batch_use18 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / calls / descriptionAdded value: +"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - removed
Input schema / properties / calls / items / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -falseNew value: +true - removed
Input schema / properties / calls / items / propertiesRemoved value: -{ - "arguments": { - "additionalProperties": true, - "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", - "type": "object" - }, - "call_id": { - "description": "Caller-chosen identifier unique within this batch.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "tool": { - "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", - "minLength": 1, - "type": "string" - } -} - removed
Input schema / properties / calls / items / requiredRemoved value: -[ - "call_id", - "tool", - "arguments" -] - removed
Input schema / properties / calls / maxItemsRemoved value: -20 - removed
Input schema / properties / calls / minItemsRemoved value: -1 - added
Input schema / properties / max_price_usdAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Per-call price cap applied to every item" +} - added
Input schema / properties / search_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / search_id / defaultAdded value: +null - changed
Input schema / properties / search_id / descriptionPrevious value: -"Optional search correlation identifier returned by search."New value: +"search_id from the search that found these operations" - removed
Input schema / properties / search_id / typeRemoved value: -"string" - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Output schema / $defsRemoved value: -{ - "jsonValue": { - "anyOf": [ - { - "additionalProperties": { - "$ref": "#/$defs/jsonValue" - }, - "type": "object" - }, - { - "items": { - "$ref": "#/$defs/jsonValue" - }, - "type": "array" - }, - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "JSON value returned by the upstream tool." - } -} - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / propertiesRemoved value: -{ - "batch_id": { - "type": "string" - }, - "error_count": { - "minimum": 0, - "type": "integer" - }, - "next_steps_guidance": { - "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", - "items": { - "type": "string" - }, - "type": "array" - }, - "results": { - "items": { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": false, - "properties": { - "call_id": { - "type": "string" - }, - "customer_cost_micros_usd": { - "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", - "minimum": 0, - "type": "integer" - }, - "data": { - "$ref": "#/$defs/jsonValue" - }, - "error": { - "anyOf": [ - { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": false, - "properties": { - "message": { - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "status": { - "type": "integer" - }, - "type": { - "enum": [ - "validation", - "authentication", - "payment", - "permission", - "rate_limit", - "upstream", - "timeout", - "internal" - ], - "type": "string" - } - }, - "required": [ - "type", - "status", - "retryable" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "request_id": { - "type": "string" - }, - "successful": { - "type": "boolean" - }, - "tool": { - "type": "string" - }, - "upstream_status": { - "description": "HTTP status returned by AIsaServices when a request was dispatched.", - "type": "integer" - } - }, - "required": [ - "call_id", - "tool", - "successful", - "request_id" - ], - "type": "object" - }, - "type": "array" - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" - }, - "success_count": { - "minimum": 0, - "type": "integer" - }, - "total_count": { - "minimum": 1, - "type": "integer" - } -} - removed
Output schema / requiredRemoved value: -[ - "session_id", - "batch_id", - "total_count", - "success_count", - "error_count", - "results", - "next_steps_guidance" -]
- Changed
delete_agentmail_inbox2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Changed
delete_agentmail_inbox_draft2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "draft_id", - "inbox_id" -]New value: +[ + "inbox_id", + "draft_id", + "Authorization" +]
- Changed
delete_agentmail_inbox_list_entry2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "direction", - "entry", - "inbox_id", - "type" -]New value: +[ + "inbox_id", + "direction", + "type", + "entry", + "Authorization" +]
- Changed
delete_agentmail_inbox_message2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id" -]New value: +[ + "inbox_id", + "message_id", + "Authorization" +]
- Changed
delete_agentmail_inbox_thread3 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - added
Input schema / properties / permanentAdded value: +{ + "description": "If true, permanently delete the thread instead of moving to trash.", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id" -]New value: +[ + "inbox_id", + "thread_id", + "Authorization" +]
- Changed
delete_agentmail_list_entry2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "direction", - "entry", - "type" -]New value: +[ + "direction", + "type", + "entry", + "Authorization" +]
- Changed
delete_agentmail_thread3 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - added
Input schema / properties / permanentAdded value: +{ + "description": "If true, permanently delete the thread instead of moving to trash.", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "thread_id" -]New value: +[ + "thread_id", + "Authorization" +]
- Removed
delete_any_agentmail_apis_v1_agentmail_api_keys_a_3ff578 - Removed
delete_any_agentmail_apis_v1_agentmail_domains_domain_id - Removed
delete_any_agentmail_apis_v1_agentmail_inboxes_in_4ef7af - Changed
get_agentmail_draft2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "draft_id" -]New value: +[ + "draft_id", + "Authorization" +]
- Changed
get_agentmail_draft_attachment2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "attachment_id", - "draft_id" -]New value: +[ + "draft_id", + "attachment_id", + "Authorization" +]
- Changed
get_agentmail_drafts2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "Authorization" +]
- Changed
get_agentmail_inbox2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Changed
get_agentmail_inbox_draft2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "draft_id", - "inbox_id" -]New value: +[ + "inbox_id", + "draft_id", + "Authorization" +]
- Changed
get_agentmail_inbox_draft_attachment2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "attachment_id", - "draft_id", - "inbox_id" -]New value: +[ + "inbox_id", + "draft_id", + "attachment_id", + "Authorization" +]
- Changed
get_agentmail_inbox_drafts2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Changed
get_agentmail_inbox_events2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Changed
get_agentmail_inbox_list_entries2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "direction", - "inbox_id", - "type" -]New value: +[ + "inbox_id", + "direction", + "type", + "Authorization" +]
- Changed
get_agentmail_inbox_list_entry2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "direction", - "entry", - "inbox_id", - "type" -]New value: +[ + "inbox_id", + "direction", + "type", + "entry", + "Authorization" +]
- Changed
get_agentmail_inbox_message2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id" -]New value: +[ + "inbox_id", + "message_id", + "Authorization" +]
- Changed
get_agentmail_inbox_message_attachment2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "attachment_id", - "inbox_id", - "message_id" -]New value: +[ + "inbox_id", + "message_id", + "attachment_id", + "Authorization" +]
- Changed
get_agentmail_inbox_message_raw2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id" -]New value: +[ + "inbox_id", + "message_id", + "Authorization" +]
- Changed
get_agentmail_inbox_messages5 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / fromRemoved value: -{ - "description": "Filter to messages whose sender contains this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / subjectRemoved value: -{ - "description": "Filter to messages whose subject contains this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / toRemoved value: -{ - "description": "Filter to messages whose recipients (to, cc, or bcc) contain this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Added
get_agentmail_inbox_messages_search - Changed
get_agentmail_inbox_metrics2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Changed
get_agentmail_inbox_thread4 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / limitRemoved value: -{ - "description": "Limit of number of items returned.", - "title": "Limit", - "type": "integer" -} - removed
Input schema / properties / page_tokenRemoved value: -{ - "description": "Page token for pagination.", - "title": "PageToken", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id" -]New value: +[ + "inbox_id", + "thread_id", + "Authorization" +]
- Changed
get_agentmail_inbox_thread_attachment2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "attachment_id", - "inbox_id", - "thread_id" -]New value: +[ + "inbox_id", + "thread_id", + "attachment_id", + "Authorization" +]
- Changed
get_agentmail_inbox_threads5 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / recipientsRemoved value: -{ - "description": "Filter to threads whose recipients contain this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / sendersRemoved value: -{ - "description": "Filter to threads whose senders contain this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / subjectRemoved value: -{ - "description": "Filter to threads whose subject contains this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Added
get_agentmail_inbox_threads_search - Changed
get_agentmail_inboxes2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "Authorization" +]
- Changed
get_agentmail_list_entries2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type" -]New value: +[ + "direction", + "type", + "Authorization" +]
- Changed
get_agentmail_list_entry2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "direction", - "entry", - "type" -]New value: +[ + "direction", + "type", + "entry", + "Authorization" +]
- Changed
get_agentmail_metrics2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "Authorization" +]
- Changed
get_agentmail_thread4 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / limitRemoved value: -{ - "description": "Limit of number of items returned.", - "title": "Limit", - "type": "integer" -} - removed
Input schema / properties / page_tokenRemoved value: -{ - "description": "Page token for pagination.", - "title": "PageToken", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "thread_id" -]New value: +[ + "thread_id", + "Authorization" +]
- Changed
get_agentmail_thread_attachment2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "attachment_id", - "thread_id" -]New value: +[ + "thread_id", + "attachment_id", + "Authorization" +]
- Changed
get_agentmail_threads5 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / recipientsRemoved value: -{ - "description": "Filter to threads whose recipients contain this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / sendersRemoved value: -{ - "description": "Filter to threads whose senders contain this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / subjectRemoved value: -{ - "description": "Filter to threads whose subject contains this value (substring match). Repeatable; all values must match.", - "items": { - "type": "string" - }, - "type": "array" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "Authorization" +]
- Added
get_agentmail_threads_search - Removed
get_any_agentmail_apis_v1_agentmail_api_keys_api_key_id - Removed
get_any_agentmail_apis_v1_agentmail_domains_domain_id - Removed
get_any_agentmail_apis_v1_agentmail_inboxes_inbox_81bd1e - Changed
get_details13 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / argumentsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." +} - removed
Input schema / properties / include_arguments_schemaRemoved value: -{ - "default": true, - "description": "Return the complete arguments_schema. Defaults to true.", - "type": "boolean" -} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support."New value: +"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged." - removed
Input schema / properties / include_response_schemaRemoved value: -{ - "default": false, - "description": "Return the complete response_schema. Defaults to false.", - "type": "boolean" -} - added
Input schema / properties / operation_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "One operation_id from search" +} - added
Input schema / properties / operation_idsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Up to 20 operation_ids, for a batch" +} - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Input schema / properties / toolsRemoved value: -{ - "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", - "items": { - "minLength": 1, - "pattern": "^\\S(?:.*\\S)?$", - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array", - "uniqueItems": true -} - added
Input schema / properties / with_quoteAdded value: +{ + "default": true, + "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", + "type": "boolean" +} - removed
Input schema / requiredRemoved value: -[ - "tools" -] - removed
Output schema / propertiesRemoved value: -{ - "error_count": { - "type": "integer" - }, - "next_steps_guidance": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]{1,128}$", - "type": "string" - }, - "success_count": { - "type": "integer" - }, - "tools": { - "additionalProperties": { - "additionalProperties": false, - "properties": { - "arguments_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "canonical_operation_id": { - "type": "string" - }, - "documentation": { - "additionalProperties": true, - "type": "object" - }, - "error": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "code", - "message" - ] - }, - "execution_supported": { - "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", - "type": "boolean" - }, - "execution_unsupported_reason": { - "description": "Why execution and quoting remain unavailable through this router.", - "type": "string" - }, - "idempotent": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - } - ] - }, - "known_pitfalls": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "read_only": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - } - ] - }, - "response_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "side_effects": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "successful": { - "type": "boolean" - } - }, - "required": [ - "successful" - ], - "type": "object" - }, - "type": "object" - }, - "total_count": { - "type": "integer" - } -} - removed
Output schema / requiredRemoved value: -[ - "error_count", - "next_steps_guidance", - "session_id", - "success_count", - "tools", - "total_count" -]
- Changed
patch_agentmail_inbox5 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / properties / metadata / anyOfPrevious value: -[ - { - "additionalProperties": { - "anyOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "format": "double", - "type": "number" - }, - { - "type": "boolean" - } - ], - "description": "A metadata value. May be a string, number, or boolean.", - "title": "MetadataValue" - }, - { - "type": "null" - } - ] - }, - "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", - "title": "UpdateMetadata", - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "allOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "format": "double", + "type": "number" + }, + { + "type": "boolean" + } + ], + "description": "A metadata value. May be a string, number, or boolean.", + "title": "MetadataValue" + } + ] + }, + { + "type": "null" + } + ] + }, + "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", + "title": "UpdateMetadata", + "type": "object" + } + ] + }, + { + "type": "null" + } +] - changed
Input schema / properties / metadata / descriptionPrevious value: -"Metadata to merge into the inbox's existing metadata. Keys you include\nare added or overwritten; keys you omit are left unchanged. To remove a\nsingle key, send it with a null value. To clear all metadata, send\n`metadata` as null. Sending an empty object is rejected; use null to\nclear. Each update must include at least one of `display_name`,\n`status`, or `metadata`."New value: +"Metadata to merge into the inbox's existing metadata. Keys you include\nare added or overwritten; keys you omit are left unchanged. To remove a\nsingle key, send it with a null value. To clear all metadata, send\n`metadata` as null. Sending an empty object is rejected; use null to\nclear. Each update must include at least one of `display_name` or\n`metadata`." - removed
Input schema / properties / statusRemoved value: -{ - "description": "`paused` stops the inbox sending and receiving mail; `active` resumes\nit. Mail that arrived while the inbox was paused is not delivered on\nresume.", - "enum": [ - "active", - "paused" - ], - "title": "InboxStatus", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Changed
patch_agentmail_inbox_draft43 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / add_attachmentsRemoved value: -{ - "description": "Attachments to add to the draft.", - "items": { - "description": "Provide either `content` or `url` for each attachment.", - "properties": { - "content": { - "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", - "type": "string" - }, - "content_disposition": { - "description": "Content disposition of attachment.", - "enum": [ - "inline", - "attachment" - ], - "title": "AttachmentContentDisposition", - "type": "string" - }, - "content_id": { - "description": "Content ID of attachment.", - "title": "AttachmentContentId", - "type": "string" - }, - "content_type": { - "description": "Content type of attachment.", - "title": "AttachmentContentType", - "type": "string" - }, - "filename": { - "description": "Filename of attachment.", - "title": "AttachmentFilename", - "type": "string" - }, - "url": { - "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", - "type": "string" - } - }, - "title": "SendAttachment", - "type": "object" - }, - "type": "array" -} - removed
Input schema / properties / add_labelsRemoved value: -{ - "description": "Label or labels to add to the draft.", - "items": { - "type": "string" - }, - "title": "DraftLabels", - "type": "array" -} - removed
Input schema / properties / bcc / anyOfRemoved value: -[ - { - "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftBcc", - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / bcc / descriptionAdded value: +"Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - added
Input schema / properties / bcc / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / bcc / titleAdded value: +"DraftBcc" - added
Input schema / properties / bcc / typeAdded value: +"array" - removed
Input schema / properties / cc / anyOfRemoved value: -[ - { - "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftCc", - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / cc / descriptionAdded value: +"Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - added
Input schema / properties / cc / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / cc / titleAdded value: +"DraftCc" - added
Input schema / properties / cc / typeAdded value: +"array" - removed
Input schema / properties / html / anyOfRemoved value: -[ - { - "description": "HTML body of draft.", - "title": "DraftHtml", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / html / descriptionAdded value: +"HTML body of draft." - added
Input schema / properties / html / titleAdded value: +"DraftHtml" - added
Input schema / properties / html / typeAdded value: +"string" - removed
Input schema / properties / remove_attachmentsRemoved value: -{ - "description": "IDs of attachments to remove from the draft.", - "items": { - "description": "ID of attachment.", - "title": "AttachmentId", - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / remove_labelsRemoved value: -{ - "description": "Label or labels to remove from the draft.", - "items": { - "type": "string" - }, - "title": "DraftLabels", - "type": "array" -} - removed
Input schema / properties / reply_to / anyOfRemoved value: -[ - { - "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftReplyTo", - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / reply_to / descriptionAdded value: +"Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`." - added
Input schema / properties / reply_to / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / reply_to / titleAdded value: +"DraftReplyTo" - added
Input schema / properties / reply_to / typeAdded value: +"array" - removed
Input schema / properties / send_at / anyOfRemoved value: -[ - { - "description": "Time at which to schedule send draft.", - "format": "date-time", - "title": "DraftSendAt", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / send_at / descriptionAdded value: +"Time at which to schedule send draft." - added
Input schema / properties / send_at / formatAdded value: +"date-time" - added
Input schema / properties / send_at / titleAdded value: +"DraftSendAt" - added
Input schema / properties / send_at / typeAdded value: +"string" - removed
Input schema / properties / subject / anyOfRemoved value: -[ - { - "description": "Subject of draft.", - "title": "DraftSubject", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / subject / descriptionAdded value: +"Subject of draft." - added
Input schema / properties / subject / titleAdded value: +"DraftSubject" - added
Input schema / properties / subject / typeAdded value: +"string" - removed
Input schema / properties / text / anyOfRemoved value: -[ - { - "description": "Plain text body of draft.", - "title": "DraftText", - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / text / descriptionAdded value: +"Plain text body of draft." - added
Input schema / properties / text / titleAdded value: +"DraftText" - added
Input schema / properties / text / typeAdded value: +"string" - removed
Input schema / properties / to / anyOfRemoved value: -[ - { - "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", - "items": { - "type": "string" - }, - "title": "DraftTo", - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / to / descriptionAdded value: +"Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - added
Input schema / properties / to / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / to / titleAdded value: +"DraftTo" - added
Input schema / properties / to / typeAdded value: +"array" - changed
Input schema / requiredPrevious value: -[ - "draft_id", - "inbox_id" -]New value: +[ + "inbox_id", + "draft_id", + "Authorization" +]
- Changed
patch_agentmail_inbox_message2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id" -]New value: +[ + "inbox_id", + "message_id", + "Authorization" +]
- Changed
patch_agentmail_inbox_thread2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id" -]New value: +[ + "inbox_id", + "thread_id", + "Authorization" +]
- Changed
patch_agentmail_thread2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "thread_id" -]New value: +[ + "thread_id", + "Authorization" +]
- Removed
patch_any_agentmail_apis_v1_agentmail_api_keys_ap_294dbb - Removed
patch_any_agentmail_apis_v1_agentmail_domains_domain_id - Removed
patch_any_agentmail_apis_v1_agentmail_inboxes_inb_9e18e8 - Changed
post_agentmail_inbox4 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / properties / domain / descriptionPrevious value: -"Domain of address. Must be a verified domain, or any subdomain of a\nverified domain that has subdomains enabled (e.g., `bot.example.com`).\nDefaults to `agentmail.to`."New value: +"Domain of address. Must be verified domain. Defaults to `agentmail.to`." - removed
Input schema / properties / statusRemoved value: -{ - "description": "Set `paused` to create the inbox paused.", - "enum": [ - "active", - "paused" - ], - "title": "InboxStatus", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "Authorization" +]
- Changed
post_agentmail_inbox_draft7 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / attachments / items / descriptionRemoved value: -"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB."New value: +"Base64 encoded content of attachment." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message."New value: +"URL to the attachment." - removed
Input schema / properties / forward_ofRemoved value: -{ - "description": "ID of message being forwarded.", - "title": "DraftForwardOf", - "type": "string" -} - removed
Input schema / properties / reply_allRemoved value: -{ - "description": "Reply to all recipients of the original message.", - "title": "DraftReplyAll", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Changed
post_agentmail_inbox_draft_send2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "draft_id", - "inbox_id" -]New value: +[ + "inbox_id", + "draft_id", + "Authorization" +]
- Changed
post_agentmail_inbox_list_entry2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "direction", - "inbox_id", - "type" -]New value: +[ + "inbox_id", + "direction", + "type", + "Authorization" +]
- Changed
post_agentmail_inbox_message_forward6 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / attachments / items / descriptionRemoved value: -"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB."New value: +"Base64 encoded content of attachment." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message."New value: +"URL to the attachment." - removed
Input schema / properties / track_opensRemoved value: -{ - "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", - "title": "TrackOpens", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id" -]New value: +[ + "inbox_id", + "message_id", + "Authorization" +]
- Changed
post_agentmail_inbox_message_reply6 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / attachments / items / descriptionRemoved value: -"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB."New value: +"Base64 encoded content of attachment." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message."New value: +"URL to the attachment." - removed
Input schema / properties / track_opensRemoved value: -{ - "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", - "title": "TrackOpens", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id" -]New value: +[ + "inbox_id", + "message_id", + "Authorization" +]
- Changed
post_agentmail_inbox_message_reply_all6 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / attachments / items / descriptionRemoved value: -"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB."New value: +"Base64 encoded content of attachment." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message."New value: +"URL to the attachment." - removed
Input schema / properties / track_opensRemoved value: -{ - "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", - "title": "TrackOpens", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id" -]New value: +[ + "inbox_id", + "message_id", + "Authorization" +]
- Changed
post_agentmail_inbox_message_send6 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - removed
Input schema / properties / attachments / items / descriptionRemoved value: -"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB."New value: +"Base64 encoded content of attachment." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message."New value: +"URL to the attachment." - removed
Input schema / properties / track_opensRemoved value: -{ - "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", - "title": "TrackOpens", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id" -]New value: +[ + "inbox_id", + "Authorization" +]
- Changed
post_agentmail_list_entry2 fields changed- added
Input schema / properties / AuthorizationAdded value: +{ + "description": "Bearer authentication", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type" -]New value: +[ + "direction", + "type", + "Authorization" +]
- Removed
post_any_agentmail_apis_v1_agentmail_inboxes_inbo_5d0d22 - Removed
post_get_agentmail_api_keys - Removed
post_get_agentmail_domains - Changed
search17 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / category / anyOfAdded value: +[ + { + "enum": [ + "seo", + "finance", + "social", + "search", + "sales", + "mail" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / category / defaultAdded value: +null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)"New value: +"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything." - removed
Input schema / properties / category / enumRemoved value: -[ - "seo", - "finance", - "social", - "search", - "sales", - "mail" -] - removed
Input schema / properties / category / typeRemoved value: -"string" - removed
Input schema / properties / known_fieldsRemoved value: -{ - "additionalProperties": true, - "default": {}, - "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", - "type": "object" -} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of additional direct tool candidates."New value: +"Maximum candidates, 1-10" - removed
Input schema / properties / limit / maximumRemoved value: -20 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / provider_filtersRemoved value: -{ - "default": [], - "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", - "items": { - "type": "string" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true -} - changed
Input schema / properties / query / descriptionPrevious value: -"Natural-language capability or task to discover."New value: +"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best." - removed
Input schema / properties / query / maxLengthRemoved value: -2000 - removed
Input schema / properties / query / minLengthRemoved value: -1 - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Output schema / propertiesRemoved value: -{ - "next_steps_guidance": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "plan": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "canonical_use_case": { - "type": "string" - }, - "description": { - "type": "string" - }, - "known_pitfalls": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "plan_ref": { - "type": "string" - }, - "primary_tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "recommended_steps": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "related_tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - } - }, - "required": [ - "canonical_use_case", - "description", - "known_pitfalls", - "plan_ref", - "primary_tools", - "recommended_steps", - "related_tools" - ] - }, - "retrieval_mode": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "search_id": { - "type": "string" - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]{1,128}$", - "type": "string" - }, - "tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "additionalProperties": false, - "properties": { - "arguments_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "description": { - "type": "string" - }, - "execution_supported": { - "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", - "type": "boolean" - }, - "execution_unsupported_reason": { - "description": "Why execution and quoting remain unavailable through this router.", - "type": "string" - }, - "has_full_schema": { - "type": "boolean" - }, - "match_reasons": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "price": { - "additionalProperties": true, - "type": "object" - }, - "retrieval_debug": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "fused_rank": { - "type": "integer" - }, - "fused_score": { - "type": "number" - }, - "lexical_rank": { - "type": "integer" - }, - "lexical_score": { - "type": "number" - }, - "rerank_admission_rank": { - "type": "integer" - }, - "rerank_rank": { - "type": "integer" - }, - "rerank_score": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "number" - } - ] - }, - "runtime_availability": { - "type": "string" - }, - "vector_view_ranks": { - "additionalProperties": { - "type": "integer" - }, - "type": "object" - }, - "vector_view_scores": { - "additionalProperties": { - "type": "number" - }, - "type": "object" - } - }, - "required": [ - "fused_rank", - "fused_score", - "lexical_rank", - "lexical_score", - "rerank_admission_rank", - "rerank_rank", - "runtime_availability", - "vector_view_ranks", - "vector_view_scores" - ] - }, - "summary": { - "type": "string" - }, - "tool": { - "type": "string" - } - }, - "required": [ - "description", - "has_full_schema", - "price", - "summary", - "tool" - ], - "type": "object" - } - } -} - removed
Output schema / requiredRemoved value: -[ - "next_steps_guidance", - "search_id", - "session_id", - "tools" -]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if its quoted price is above this many USD"New value: +"Refuse the call before any spend if it would cost more than this many USD"
69 tool updates
- Added
any_agentmail_apis_v1_agentmail_domains_domain_id_725bd7 - Added
any_agentmail_apis_v1_agentmail_domains_domain_id_verify - Added
batch_get_schema - Added
batch_quote - Changed
batch_use18 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / calls / descriptionRemoved value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - added
Input schema / properties / calls / items / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / properties / calls / items / propertiesAdded value: +{ + "arguments": { + "additionalProperties": true, + "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", + "type": "object" + }, + "call_id": { + "description": "Caller-chosen identifier unique within this batch.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "tool": { + "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / calls / items / requiredAdded value: +[ + "call_id", + "tool", + "arguments" +] - added
Input schema / properties / calls / maxItemsAdded value: +20 - added
Input schema / properties / calls / minItemsAdded value: +1 - removed
Input schema / properties / max_price_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Per-call price cap applied to every item" -} - removed
Input schema / properties / search_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / search_id / defaultRemoved value: -null - changed
Input schema / properties / search_id / descriptionPrevious value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search." - added
Input schema / properties / search_id / typeAdded value: +"string" - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / $defsAdded value: +{ + "jsonValue": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/jsonValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/$defs/jsonValue" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "JSON value returned by the upstream tool." + } +} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / propertiesAdded value: +{ + "batch_id": { + "type": "string" + }, + "error_count": { + "minimum": 0, + "type": "integer" + }, + "next_steps_guidance": { + "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "call_id": { + "type": "string" + }, + "customer_cost_micros_usd": { + "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", + "minimum": 0, + "type": "integer" + }, + "data": { + "$ref": "#/$defs/jsonValue" + }, + "error": { + "anyOf": [ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "status": { + "type": "integer" + }, + "type": { + "enum": [ + "validation", + "authentication", + "payment", + "permission", + "rate_limit", + "upstream", + "timeout", + "internal" + ], + "type": "string" + } + }, + "required": [ + "type", + "status", + "retryable" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "request_id": { + "type": "string" + }, + "successful": { + "type": "boolean" + }, + "tool": { + "type": "string" + }, + "upstream_status": { + "description": "HTTP status returned by AIsaServices when a request was dispatched.", + "type": "integer" + } + }, + "required": [ + "call_id", + "tool", + "successful", + "request_id" + ], + "type": "object" + }, + "type": "array" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" + }, + "success_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "minimum": 1, + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "session_id", + "batch_id", + "total_count", + "success_count", + "error_count", + "results", + "next_steps_guidance" +]
- Changed
delete_agentmail_inbox2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
delete_agentmail_inbox_draft2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "Authorization" -]New value: +[ + "draft_id", + "inbox_id" +]
- Changed
delete_agentmail_inbox_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "direction", - "type", - "entry", - "Authorization" -]New value: +[ + "direction", + "entry", + "inbox_id", + "type" +]
- Changed
delete_agentmail_inbox_message2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
delete_agentmail_inbox_thread3 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - removed
Input schema / properties / permanentRemoved value: -{ - "description": "If true, permanently delete the thread instead of moving to trash.", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id", - "Authorization" -]New value: +[ + "inbox_id", + "thread_id" +]
- Changed
delete_agentmail_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type", - "entry", - "Authorization" -]New value: +[ + "direction", + "entry", + "type" +]
- Changed
delete_agentmail_thread3 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - removed
Input schema / properties / permanentRemoved value: -{ - "description": "If true, permanently delete the thread instead of moving to trash.", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "thread_id", - "Authorization" -]New value: +[ + "thread_id" +]
- Added
delete_any_agentmail_apis_v1_agentmail_api_keys_a_3ff578 - Added
delete_any_agentmail_apis_v1_agentmail_domains_domain_id - Added
delete_any_agentmail_apis_v1_agentmail_inboxes_in_4ef7af - Changed
get_agentmail_draft2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "draft_id", - "Authorization" -]New value: +[ + "draft_id" +]
- Changed
get_agentmail_draft_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "draft_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "draft_id" +]
- Changed
get_agentmail_drafts2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Changed
get_agentmail_inbox2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
get_agentmail_inbox_draft2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "Authorization" -]New value: +[ + "draft_id", + "inbox_id" +]
- Changed
get_agentmail_inbox_draft_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "draft_id", + "inbox_id" +]
- Changed
get_agentmail_inbox_drafts2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
get_agentmail_inbox_events2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
get_agentmail_inbox_list_entries2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "direction", - "type", - "Authorization" -]New value: +[ + "direction", + "inbox_id", + "type" +]
- Changed
get_agentmail_inbox_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "direction", - "type", - "entry", - "Authorization" -]New value: +[ + "direction", + "entry", + "inbox_id", + "type" +]
- Changed
get_agentmail_inbox_message2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
get_agentmail_inbox_message_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "inbox_id", + "message_id" +]
- Changed
get_agentmail_inbox_message_raw2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
get_agentmail_inbox_messages5 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / fromAdded value: +{ + "description": "Filter to messages whose sender contains this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / subjectAdded value: +{ + "description": "Filter to messages whose subject contains this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / toAdded value: +{ + "description": "Filter to messages whose recipients (to, cc, or bcc) contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Removed
get_agentmail_inbox_messages_search - Changed
get_agentmail_inbox_metrics2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
get_agentmail_inbox_thread4 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / limitAdded value: +{ + "description": "Limit of number of items returned.", + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / page_tokenAdded value: +{ + "description": "Page token for pagination.", + "title": "PageToken", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id", - "Authorization" -]New value: +[ + "inbox_id", + "thread_id" +]
- Changed
get_agentmail_inbox_thread_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "inbox_id", + "thread_id" +]
- Changed
get_agentmail_inbox_threads5 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / recipientsAdded value: +{ + "description": "Filter to threads whose recipients contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / sendersAdded value: +{ + "description": "Filter to threads whose senders contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / subjectAdded value: +{ + "description": "Filter to threads whose subject contains this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Removed
get_agentmail_inbox_threads_search - Changed
get_agentmail_inboxes2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Changed
get_agentmail_list_entries2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type", - "Authorization" -]New value: +[ + "direction", + "type" +]
- Changed
get_agentmail_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type", - "entry", - "Authorization" -]New value: +[ + "direction", + "entry", + "type" +]
- Changed
get_agentmail_metrics2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Changed
get_agentmail_thread4 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / limitAdded value: +{ + "description": "Limit of number of items returned.", + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / page_tokenAdded value: +{ + "description": "Page token for pagination.", + "title": "PageToken", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "thread_id", - "Authorization" -]New value: +[ + "thread_id" +]
- Changed
get_agentmail_thread_attachment2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "thread_id", - "attachment_id", - "Authorization" -]New value: +[ + "attachment_id", + "thread_id" +]
- Changed
get_agentmail_threads5 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / recipientsAdded value: +{ + "description": "Filter to threads whose recipients contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / sendersAdded value: +{ + "description": "Filter to threads whose senders contain this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / subjectAdded value: +{ + "description": "Filter to threads whose subject contains this value (substring match). Repeatable; all values must match.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Removed
get_agentmail_threads_search - Added
get_any_agentmail_apis_v1_agentmail_api_keys_api_key_id - Added
get_any_agentmail_apis_v1_agentmail_domains_domain_id - Added
get_any_agentmail_apis_v1_agentmail_inboxes_inbox_81bd1e - Changed
get_details13 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." -} - added
Input schema / properties / include_arguments_schemaAdded value: +{ + "default": true, + "description": "Return the complete arguments_schema. Defaults to true.", + "type": "boolean" +} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged."New value: +"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support." - added
Input schema / properties / include_response_schemaAdded value: +{ + "default": false, + "description": "Return the complete response_schema. Defaults to false.", + "type": "boolean" +} - removed
Input schema / properties / operation_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "One operation_id from search" -} - removed
Input schema / properties / operation_idsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Up to 20 operation_ids, for a batch" -} - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", + "items": { + "minLength": 1, + "pattern": "^\\S(?:.*\\S)?$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - removed
Input schema / properties / with_quoteRemoved value: -{ - "default": true, - "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", - "type": "boolean" -} - added
Input schema / requiredAdded value: +[ + "tools" +] - added
Output schema / propertiesAdded value: +{ + "error_count": { + "type": "integer" + }, + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "success_count": { + "type": "integer" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "canonical_operation_id": { + "type": "string" + }, + "documentation": { + "additionalProperties": true, + "type": "object" + }, + "error": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ] + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "idempotent": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "read_only": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "response_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "side_effects": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "successful" + ], + "type": "object" + }, + "type": "object" + }, + "total_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "error_count", + "next_steps_guidance", + "session_id", + "success_count", + "tools", + "total_count" +]
- Changed
patch_agentmail_inbox5 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / properties / metadata / anyOfPrevious value: -[ - { - "allOf": [ - { - "additionalProperties": { - "anyOf": [ - { - "allOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "format": "double", - "type": "number" - }, - { - "type": "boolean" - } - ], - "description": "A metadata value. May be a string, number, or boolean.", - "title": "MetadataValue" - } - ] - }, - { - "type": "null" - } - ] - }, - "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", - "title": "UpdateMetadata", - "type": "object" - } - ] - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "format": "double", + "type": "number" + }, + { + "type": "boolean" + } + ], + "description": "A metadata value. May be a string, number, or boolean.", + "title": "MetadataValue" + }, + { + "type": "null" + } + ] + }, + "description": "Custom key-value pairs to merge into the inbox's existing metadata. A\nvalue may be a string, number, boolean, or null. Setting a key to null\nremoves it. Up to 256 keys; keys and string values are each limited to\n256 characters.", + "title": "UpdateMetadata", + "type": "object" + }, + { + "type": "null" + } +] - changed
Input schema / properties / metadata / descriptionPrevious value: -"Metadata to merge into the inbox's existing metadata. Keys you include\nare added or overwritten; keys you omit are left unchanged. To remove a\nsingle key, send it with a null value. To clear all metadata, send\n`metadata` as null. Sending an empty object is rejected; use null to\nclear. Each update must include at least one of `display_name` or\n`metadata`."New value: +"Metadata to merge into the inbox's existing metadata. Keys you include\nare added or overwritten; keys you omit are left unchanged. To remove a\nsingle key, send it with a null value. To clear all metadata, send\n`metadata` as null. Sending an empty object is rejected; use null to\nclear. Each update must include at least one of `display_name`,\n`status`, or `metadata`." - added
Input schema / properties / statusAdded value: +{ + "description": "`paused` stops the inbox sending and receiving mail; `active` resumes\nit. Mail that arrived while the inbox was paused is not delivered on\nresume.", + "enum": [ + "active", + "paused" + ], + "title": "InboxStatus", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
patch_agentmail_inbox_draft43 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / add_attachmentsAdded value: +{ + "description": "Attachments to add to the draft.", + "items": { + "description": "Provide either `content` or `url` for each attachment.", + "properties": { + "content": { + "description": "Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB.", + "type": "string" + }, + "content_disposition": { + "description": "Content disposition of attachment.", + "enum": [ + "inline", + "attachment" + ], + "title": "AttachmentContentDisposition", + "type": "string" + }, + "content_id": { + "description": "Content ID of attachment.", + "title": "AttachmentContentId", + "type": "string" + }, + "content_type": { + "description": "Content type of attachment.", + "title": "AttachmentContentType", + "type": "string" + }, + "filename": { + "description": "Filename of attachment.", + "title": "AttachmentFilename", + "type": "string" + }, + "url": { + "description": "URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message.", + "type": "string" + } + }, + "title": "SendAttachment", + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / add_labelsAdded value: +{ + "description": "Label or labels to add to the draft.", + "items": { + "type": "string" + }, + "title": "DraftLabels", + "type": "array" +} - added
Input schema / properties / bcc / anyOfAdded value: +[ + { + "description": "Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftBcc", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / bcc / descriptionRemoved value: -"Addresses of BCC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - removed
Input schema / properties / bcc / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / bcc / titleRemoved value: -"DraftBcc" - removed
Input schema / properties / bcc / typeRemoved value: -"array" - added
Input schema / properties / cc / anyOfAdded value: +[ + { + "description": "Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftCc", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / cc / descriptionRemoved value: -"Addresses of CC recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - removed
Input schema / properties / cc / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / cc / titleRemoved value: -"DraftCc" - removed
Input schema / properties / cc / typeRemoved value: -"array" - added
Input schema / properties / html / anyOfAdded value: +[ + { + "description": "HTML body of draft.", + "title": "DraftHtml", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / html / descriptionRemoved value: -"HTML body of draft." - removed
Input schema / properties / html / titleRemoved value: -"DraftHtml" - removed
Input schema / properties / html / typeRemoved value: -"string" - added
Input schema / properties / remove_attachmentsAdded value: +{ + "description": "IDs of attachments to remove from the draft.", + "items": { + "description": "ID of attachment.", + "title": "AttachmentId", + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / remove_labelsAdded value: +{ + "description": "Label or labels to remove from the draft.", + "items": { + "type": "string" + }, + "title": "DraftLabels", + "type": "array" +} - added
Input schema / properties / reply_to / anyOfAdded value: +[ + { + "description": "Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftReplyTo", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / reply_to / descriptionRemoved value: -"Reply-to addresses. In format `username@domain.com` or `Display Name <username@domain.com>`." - removed
Input schema / properties / reply_to / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / reply_to / titleRemoved value: -"DraftReplyTo" - removed
Input schema / properties / reply_to / typeRemoved value: -"array" - added
Input schema / properties / send_at / anyOfAdded value: +[ + { + "description": "Time at which to schedule send draft.", + "format": "date-time", + "title": "DraftSendAt", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / send_at / descriptionRemoved value: -"Time at which to schedule send draft." - removed
Input schema / properties / send_at / formatRemoved value: -"date-time" - removed
Input schema / properties / send_at / titleRemoved value: -"DraftSendAt" - removed
Input schema / properties / send_at / typeRemoved value: -"string" - added
Input schema / properties / subject / anyOfAdded value: +[ + { + "description": "Subject of draft.", + "title": "DraftSubject", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / subject / descriptionRemoved value: -"Subject of draft." - removed
Input schema / properties / subject / titleRemoved value: -"DraftSubject" - removed
Input schema / properties / subject / typeRemoved value: -"string" - added
Input schema / properties / text / anyOfAdded value: +[ + { + "description": "Plain text body of draft.", + "title": "DraftText", + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / text / descriptionRemoved value: -"Plain text body of draft." - removed
Input schema / properties / text / titleRemoved value: -"DraftText" - removed
Input schema / properties / text / typeRemoved value: -"string" - added
Input schema / properties / to / anyOfAdded value: +[ + { + "description": "Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`.", + "items": { + "type": "string" + }, + "title": "DraftTo", + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / to / descriptionRemoved value: -"Addresses of recipients. In format `username@domain.com` or `Display Name <username@domain.com>`." - removed
Input schema / properties / to / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / to / titleRemoved value: -"DraftTo" - removed
Input schema / properties / to / typeRemoved value: -"array" - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "Authorization" -]New value: +[ + "draft_id", + "inbox_id" +]
- Changed
patch_agentmail_inbox_message2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
patch_agentmail_inbox_thread2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "thread_id", - "Authorization" -]New value: +[ + "inbox_id", + "thread_id" +]
- Changed
patch_agentmail_thread2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "thread_id", - "Authorization" -]New value: +[ + "thread_id" +]
- Added
patch_any_agentmail_apis_v1_agentmail_api_keys_ap_294dbb - Added
patch_any_agentmail_apis_v1_agentmail_domains_domain_id - Added
patch_any_agentmail_apis_v1_agentmail_inboxes_inb_9e18e8 - Changed
post_agentmail_inbox4 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / properties / domain / descriptionPrevious value: -"Domain of address. Must be verified domain. Defaults to `agentmail.to`."New value: +"Domain of address. Must be a verified domain, or any subdomain of a\nverified domain that has subdomains enabled (e.g., `bot.example.com`).\nDefaults to `agentmail.to`." - added
Input schema / properties / statusAdded value: +{ + "description": "Set `paused` to create the inbox paused.", + "enum": [ + "active", + "paused" + ], + "title": "InboxStatus", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "Authorization" -]New value: +[]
- Changed
post_agentmail_inbox_draft7 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / forward_ofAdded value: +{ + "description": "ID of message being forwarded.", + "title": "DraftForwardOf", + "type": "string" +} - added
Input schema / properties / reply_allAdded value: +{ + "description": "Reply to all recipients of the original message.", + "title": "DraftReplyAll", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
post_agentmail_inbox_draft_send2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "draft_id", - "Authorization" -]New value: +[ + "draft_id", + "inbox_id" +]
- Changed
post_agentmail_inbox_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "direction", - "type", - "Authorization" -]New value: +[ + "direction", + "inbox_id", + "type" +]
- Changed
post_agentmail_inbox_message_forward6 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / track_opensAdded value: +{ + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
post_agentmail_inbox_message_reply6 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / track_opensAdded value: +{ + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
post_agentmail_inbox_message_reply_all6 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / track_opensAdded value: +{ + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "message_id", - "Authorization" -]New value: +[ + "inbox_id", + "message_id" +]
- Changed
post_agentmail_inbox_message_send6 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - added
Input schema / properties / attachments / items / descriptionAdded value: +"Provide either `content` or `url` for each attachment." - changed
Input schema / properties / attachments / items / properties / content / descriptionPrevious value: -"Base64 encoded content of attachment."New value: +"Base64 encoded content of the attachment. The entire request, including the message body and all attachments, is limited to 6 MB." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"URL to the attachment."New value: +"URL that AgentMail can download without custom authentication headers or cookies.\nRedirects and pre-signed URLs are supported, and the final response must be a\nsuccessful 2xx response. Keep URL-backed attachments around 30 MB total per message." - added
Input schema / properties / track_opensAdded value: +{ + "description": "Track when this message is first opened. Requires a custom domain with tracking enabled and\nan HTML body. Opens surface as the `opened` label on the message and as a `message.opened`\nevent. One pixel is injected per message, not per recipient, so a message with several\nrecipients fires once when any of them opens it, and the event does not identify which one.", + "title": "TrackOpens", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "inbox_id", - "Authorization" -]New value: +[ + "inbox_id" +]
- Changed
post_agentmail_list_entry2 fields changed- removed
Input schema / properties / AuthorizationRemoved value: -{ - "description": "Bearer authentication", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "direction", - "type", - "Authorization" -]New value: +[ + "direction", + "type" +]
- Added
post_any_agentmail_apis_v1_agentmail_inboxes_inbo_5d0d22 - Added
post_get_agentmail_api_keys - Added
post_get_agentmail_domains - Changed
search17 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "enum": [ - "seo", - "finance", - "social", - "search", - "sales", - "mail" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything."New value: +"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)" - added
Input schema / properties / category / enumAdded value: +[ + "seo", + "finance", + "social", + "search", + "sales", + "mail" +] - added
Input schema / properties / category / typeAdded value: +"string" - added
Input schema / properties / known_fieldsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", + "type": "object" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates." - added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / provider_filtersAdded value: +{ + "default": [], + "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", + "items": { + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / query / descriptionPrevious value: -"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best."New value: +"Natural-language capability or task to discover." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / propertiesAdded value: +{ + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "canonical_use_case": { + "type": "string" + }, + "description": { + "type": "string" + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan_ref": { + "type": "string" + }, + "primary_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "recommended_steps": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "related_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + } + }, + "required": [ + "canonical_use_case", + "description", + "known_pitfalls", + "plan_ref", + "primary_tools", + "recommended_steps", + "related_tools" + ] + }, + "retrieval_mode": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "search_id": { + "type": "string" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "description": { + "type": "string" + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "has_full_schema": { + "type": "boolean" + }, + "match_reasons": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "price": { + "additionalProperties": true, + "type": "object" + }, + "retrieval_debug": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "fused_rank": { + "type": "integer" + }, + "fused_score": { + "type": "number" + }, + "lexical_rank": { + "type": "integer" + }, + "lexical_score": { + "type": "number" + }, + "rerank_admission_rank": { + "type": "integer" + }, + "rerank_rank": { + "type": "integer" + }, + "rerank_score": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] + }, + "runtime_availability": { + "type": "string" + }, + "vector_view_ranks": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "vector_view_scores": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "fused_rank", + "fused_score", + "lexical_rank", + "lexical_score", + "rerank_admission_rank", + "rerank_rank", + "runtime_availability", + "vector_view_ranks", + "vector_view_scores" + ] + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "description", + "has_full_schema", + "price", + "summary", + "tool" + ], + "type": "object" + } + } +} - added
Output schema / requiredAdded value: +[ + "next_steps_guidance", + "search_id", + "session_id", + "tools" +]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if it would cost more than this many USD"New value: +"Refuse the call before any spend if its quoted price is above this many USD"
1 tool update
- Changed
get_details1 field changed- added
Input schema / properties / include_documentationAdded value: +{ + "default": false, + "description": "Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged.", + "type": "boolean" +}
54 tool updates
- First observed
batch_use - First observed
delete_agentmail_inbox - First observed
delete_agentmail_inbox_draft - First observed
delete_agentmail_inbox_list_entry - First observed
delete_agentmail_inbox_message - First observed
delete_agentmail_inbox_thread - First observed
delete_agentmail_list_entry - First observed
delete_agentmail_thread - First observed
get_agentmail_draft - First observed
get_agentmail_draft_attachment - First observed
get_agentmail_drafts - First observed
get_agentmail_inbox - First observed
get_agentmail_inbox_draft - First observed
get_agentmail_inbox_draft_attachment - First observed
get_agentmail_inbox_drafts - First observed
get_agentmail_inbox_events - First observed
get_agentmail_inbox_list_entries - First observed
get_agentmail_inbox_list_entry - First observed
get_agentmail_inbox_message - First observed
get_agentmail_inbox_message_attachment - First observed
get_agentmail_inbox_message_raw - First observed
get_agentmail_inbox_messages - First observed
get_agentmail_inbox_messages_search - First observed
get_agentmail_inbox_metrics - First observed
get_agentmail_inbox_thread - First observed
get_agentmail_inbox_thread_attachment - First observed
get_agentmail_inbox_threads - First observed
get_agentmail_inbox_threads_search - First observed
get_agentmail_inboxes - First observed
get_agentmail_list_entries - First observed
get_agentmail_list_entry - First observed
get_agentmail_metrics - First observed
get_agentmail_thread - First observed
get_agentmail_thread_attachment - First observed
get_agentmail_threads - First observed
get_agentmail_threads_search - First observed
get_details - First observed
list_categories - First observed
patch_agentmail_inbox - First observed
patch_agentmail_inbox_draft - First observed
patch_agentmail_inbox_message - First observed
patch_agentmail_inbox_thread - First observed
patch_agentmail_thread - First observed
post_agentmail_inbox - First observed
post_agentmail_inbox_draft - First observed
post_agentmail_inbox_draft_send - First observed
post_agentmail_inbox_list_entry - First observed
post_agentmail_inbox_message_forward - First observed
post_agentmail_inbox_message_reply - First observed
post_agentmail_inbox_message_reply_all - First observed
post_agentmail_inbox_message_send - First observed
post_agentmail_list_entry - First observed
search - First observed
use
Publisher details
- Operator
- AIsa · Publisher source
- Operator website
- https://aisa.one
- Vendor relationship
- Independent
- Documentation
- https://mcp.aisa.one/servers
- Trust center
- Not available
- Restrictions
- No paid plan, admin approval, regional limit or custom OAuth app is needed to connect. Sign-in is OAuth against auth.aisa.one with dynamic client registration (RFC 7591), or an Authorization: Bearer AIsa API key. search, get_details and list_categories are free. use and batch_use are billed per call to the caller's own AIsa key, and max_price_usd refuses anything above a cap before any spend. Some operations are subscription-only on the gateway and answer 402 without the Hive GTM Growth plan.
Related MCP Connectors
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.
Hosted email MCP for your own Gmail, Outlook.com, Microsoft 365, iCloud or IMAP inbox: read, search, draft, reply in thread, forward and file mail. It moves or flags up to 500 messages in one call, and a send leaves exactly one copy in Sent. A calendar is a separate connection, and connecting one adds diary and scheduling tools.
Hosted email for AI agents: create inboxes, send, receive, and reply over MCP with scoped API keys
Related MCP Servers
- AlicenseAqualityDmaintenanceEmail infrastructure for AI agents — create inboxes, send/receive email, search messages, and manage threads via MCP tools.102 npm2MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to read, search, send, manage, schedule, and analyze email across multiple IMAP/SMTP accounts through a single MCP server. Also supports drafts and templates, provider-aware labels and bulk operations, calendar extraction, real-time mailbox watching, and OAuth2 sign-in for Gmail and Microsoft 365.17 npmISC
- AlicenseAqualityAmaintenanceEnables AI agents to read and send email, handle attachments and manage calendar invitations through their own IMAP/SMTP mailboxes, with per-mailbox sender and recipient allow lists and automatic HTML-to-Markdown conversion. It runs as a single self-hosted Docker container, exposing the same tools over MCP and REST.21512MIT
- AlicenseNot gradedqualityAmaintenanceAuthenticated email service MCP for AI agents.194Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.