anima
Server Details
Give your AI agent an identity it owns: email inbox, US phone number, SMS, voice, and a vault.
- Status
- Healthy
- Uptime
- 92.9% over 21 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- anima-labs-ai/mcp-server
- GitHub Stars
- 1
TDQS
Scored across 67 tools
Every tool targets a distinct resource and action (e.g., email_draft_send vs email_send, sms_list vs sms_thread_list, vault_credential_get vs vault_credential_search). Even closely related tools like email_list, email_search, and email_get have clear, non-overlapping purposes described in their descriptions.
The overwhelming majority follow a consistent `resource_action` snake_case pattern (agent_create, domain_update, phone_call_get, sms_send, webhook_set). A few noun-style names like account_overview, usage_overview, and domain_zone_file break the action-oriented pattern slightly, but the convention is otherwise uniform.
67 tools is a very large surface for a single MCP server, even for a multi-channel platform covering email, SMS, voice, vault, and webhooks. The tools are organized and purposeful, but the sheer count makes selection expensive and context-heavy, exceeding what is reasonable for most agent workflows.
The server provides comprehensive lifecycle coverage across agents, domains, inboxes, emails, SMS, phone calls, vault credentials, and webhooks. Minor gaps exist—such as no email deletion, no SMS deletion, and no way to upload attachments—but core workflows are fully supported.
Available Tools
67 toolsaccount_overviewAccount OverviewARead-onlyInspect
Single-call workspace snapshot: organization context, credential identity, send-capability flags (canSendEmail / canSendSms), inventory counts (agents, domains, phones), active blockers (each carrying the canonical MCP tool that resolves it), and the running MCP server's deploy identity (commitSha, revision, buildId, startedAt). Strict superset of the legacy whoami + workspace_health pair. Use before any non-trivial workflow to answer 'who am I, can I do X right now, and which deploy is serving me?' in one round-trip — no real send needed to find out.
| 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 declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real value beyond them: a single round-trip replaces multiple calls, and 'no real send needed to find out' tells the agent it can probe send-capability without side effects. It stops short of discussing auth preconditions 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?
Dense and front-loaded — the snapshot contents and the routing question lead, and every clause carries information. It is a single long sentence that leans on parenthetical enumerations, which is efficient but slightly heavy for one line.
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 needn't re-explain return shapes, and it still names the key fields an agent will rely on. For a zero-parameter, read-only overview, nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There are no argument semantics to clarify, and the description correctly spends no words on 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?
States a specific resource (account overview) and enumerates exactly what it returns: org context, credential identity, send-capability flags, inventory counts, active blockers, and deploy identity. It explicitly positions itself as a 'strict superset of the legacy whoami + workspace_health pair', distinguishing it from the sibling usage_overview without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use before any non-trivial workflow') plus the exact question it answers ('who am I, can I do X right now, and which deploy is serving me?'), and names the alternative it supersedes. Nothing about when-to-use is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_createCreate AgentAIdempotentInspect
Create a new agent with optional metadata, and optionally attach an initial address. Use this when provisioning a new sending identity or automation actor. To add more addresses later, use agent_update. Pass idempotencyKey to make retries safe — same key + same body returns the original response, same key + different body returns IDEMPOTENCY_BODY_MISMATCH 409.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Agent display name | |
| slug | No | URL-friendly unique identifier (lowercase alphanumeric + hyphens, 2-64 chars). Auto-derived from name if omitted. | |
| No | Optional email address to provision for this agent | ||
| address | No | Optional initial postal address to attach to the agent on creation. To add more addresses later, use agent_update. | |
| metadata | No | Optional agent metadata as key-value string pairs | |
| idempotencyKey | No | Optional Idempotency-Key. Send the SAME key on retries of the SAME create payload to guarantee exactly-once provisioning even if the network drops mid-flight. Reuse with a different body returns IDEMPOTENCY_BODY_MISMATCH 409. Keys are scoped per-credential, ASCII-printable 1-255 chars (Stripe convention). Server caches the response for 24h. Note: the idempotency guarantee covers the agent record only — if a subsequent address attachment fails, the agent will still exist. | |
| provisionPhone | No | Whether to auto-provision a phone number for this agent |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly explains the idempotency behavior: 'Pass idempotencyKey to make retries safe — same key + same body returns the original response, same key + different body returns IDEMPOTENCY_BODY_MISMATCH 409.' It also discloses a subtle caveat about partial failure with address attachment, going beyond the basic idempotentHint 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?
The description is four sentences, each serving a clear purpose: purpose, use case, alternative guidance, and idempotency note. It is succinct, front-loaded with the primary action, and contains no redundant or filler 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?
The description covers all essential contexts: what the tool does, when to invoke it, how it differs from related tools (agent_update for adding addresses later), and important behavioral nuances (idempotency and partial-failure caveat). Since an output schema exists separately, the lack of return-value details is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides detailed descriptions for every parameter (100% coverage), and the overall description adds high-level context (e.g., 'sending identity or automation actor') that is not in the schema. However, it does not individually elaborate on each parameter beyond what the schema states, so a score slightly above the schema-heavy baseline is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a new agent with optional metadata, and optionally attach an initial address.' It also identifies the intended use case ('provisioning a new sending identity or automation actor'), making the action and scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool and when not: 'Use this when provisioning a new sending identity or automation actor' and 'To add more addresses later, use agent_update.' This provides direct guidance for tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_deleteDelete AgentADestructiveIdempotentInspect
Delete an agent by ID. Use this to remove deprecated or compromised agents that should no longer send messages. Cascades to attached addresses, email identities, and phone identities.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Agent ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| deleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses the destructive side effect: 'Cascades to attached addresses, email identities, and phone identities.' This, combined with the destructiveHint annotation, fully informs the agent of the operation's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, direct, and free of fluff. It front-loads the main action and then adds necessary context about cascade effects. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete operation, the description covers the essential context: what is deleted, why you would use it, and what else is affected. The lack of an output schema is acceptable since delete operations typically return a confirmation or empty response. No critical information 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 only parameter 'id' is described as 'Agent ID', which is sufficient given the tool's singular purpose. While terse, it is unambiguous and matches the schema. A bit more detail about the ID format (e.g., UUID) could add value, but it is not necessary for correct invocation.
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 the tool deletes an agent by ID, which is a specific action on a specific resource. It distinguishes itself from sibling tools like agent_create, agent_get, agent_list, and agent_update by the verb and intent.
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 guidance on when to use the tool ('to remove deprecated or compromised agents that should no longer send messages'), which helps the agent decide when this operation is appropriate. It stops short of explicit warnings or conditions, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_getGet AgentARead-onlyIdempotentInspect
Fetch full detail for a single agent by ID: settings, metadata, status, and the full addresses[] / emailIdentities[] / phoneIdentities[] lists. Use agent_list to browse multiple agents.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Agent ID. Returns full agent detail including addresses, emailIdentities, and phoneIdentities. |
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 this as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by enumerating the returned data categories: settings, metadata, status, addresses, emailIdentities, and phoneIdentities. This is useful beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The primary capability is front-loaded, and the sibling routing is placed at the end, making the description easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read operation with full schema coverage, annotations, and an output schema, the description is sufficient. It explains what the tool returns and when to use an alternative, leaving no critical gap for 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?
The schema has 100% description coverage for the single 'id' parameter, and the parameter description already explains that it returns full agent detail. The tool description reinforces this but does not add significant new semantic 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 uses a specific verb ('Fetch full detail for a single agent by ID') and clearly identifies the resource and the data returned. It also distinguishes this tool from agent_list, which is for browsing multiple agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use agent_list for browsing multiple agents, which helps an agent decide between the two similar tools. It implies agent_get is the correct choice when a single agent ID is known and full detail is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_listList AgentsARead-onlyIdempotentInspect
List agents in the current account context with cursor pagination. Returns a lightweight per-agent record (addresses are NOT included to avoid N+1 round-trips). Use agent_get for full single-agent detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of agents to return. | |
| cursor | No | Pagination cursor from a previous list response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds behavioral details about cursor pagination and the exclusion of addresses for performance, going beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, direct and free of fluff. It efficiently states the action, the response characteristics, and the alternative tool, with no redundant 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 simple list tool with optional pagination, the description covers the core purpose, pagination behavior, response shape (lightweight, excluding addresses), and when to use a different tool. With an output schema present, the context is complete without over-explaining.
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?
Both parameters (limit and cursor) have clear descriptions in the schema, giving 100% coverage. The tool description does not add extra semantics beyond the schema, but it does reinforce the pagination concept, 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 clearly states the tool lists agents in the current account context with cursor pagination, and distinguishes itself from agent_get by noting it returns lightweight records without addresses. This gives a precise, unambiguous 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?
Explicitly directs users to agent_get for full single-agent detail, indicating when not to use this tool. It also explains the lightweight response is intentional to avoid N+1 round-trips, providing context for when this listing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_updateUpdate AgentAInspect
Update an agent's name or metadata, and/or add/update/delete an address. Use addAddress to attach a new address, updateAddress to change fields on an existing one (by addressId), deleteAddressId to remove one. Multiple field-level changes can be combined in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Agent ID | |
| name | No | Updated agent display name | |
| metadata | No | Updated metadata as key-value string pairs | |
| addAddress | No | Attach a new postal address to this agent. | |
| updateAddress | No | Update fields on an existing address. Pass addressId + the fields to change. | |
| deleteAddressId | No | ID of an address to remove from this agent. |
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 discloses a destructive operation ('deleteAddressId to remove one'), while the annotations declare destructiveHint=false. This is an annotation contradiction: an agent relying on the hint would underestimate the tool's destructive potential. The description does add a useful combinability note, but the contradiction forces a low score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and every clause carries information; the first sentence gives the general purpose and the second routes to the correct parameter names. It is slightly dense with comma-separated operations, but not padded.
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 six parameters and nested objects, the description covers the address operation modes and combinability. However, it leaves important invocation semantics implicit: whether metadata overwrites wholesale or merges, what happens when an addressId is invalid, and whether all changes apply atomically. The existence of an output schema and full parameter descriptions helps, but an agent still lacks enough guidance for a safe complex update.
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 descriptions already cover all six parameters (100%), so the baseline is 3. The description adds meaningful relationship semantics: add/update/delete are distinct operations and multiple can be combined in one call, which the schema alone does not convey. It does not clarify metadata replacement versus merge, but that gap is not the description's core 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 names a specific verb ('Update') and resource ('agent'), and enumerates the exact modifiable surfaces: name, metadata, and addresses. This clearly distinguishes agent_update from siblings like agent_create, agent_get, and agent_delete without needing to inspect the schema.
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 clearly establishes the use case: updating an existing agent and its addresses. It also explains the three address operations and that they can be combined. However, it does not explicitly state when-not-to-use or name alternatives such as agent_create for new agents, 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.
domain_createCreate DomainAIdempotentInspect
Register a custom sending domain in the workspace so it can be configured for email traffic. Use this before DNS setup and verification.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name to add, such as mail.example.com or example.com. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that the operation is non-read-only, non-destructive, and idempotent. The description adds that the domain is 'registered' and that it is a precursor to DNS setup, implying it does not perform DNS configuration or verification itself. This is consistent with annotations but does not provide additional behavioral insight beyond what the annotations convey, such as whether an existing domain is overwritten or how idempotency manifests. Given annotations cover the core traits, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no superfluous information. The primary purpose is front-loaded, and the usage guidance is neatly appended. Every word adds value, making it efficiently scannable for an 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?
Given the tool's low complexity (one parameter, output schema present), the description provides sufficient context: what it does, when to use it, and its place in the workflow. The presence of an output schema means return details are already structured, and the description covers the essential purpose and sequencing. Nothing crucial is missing for 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?
The schema provides 100% coverage for the single 'domain' parameter with a clear description ('Domain name to add, such as mail.example.com or example.com.'). The description does not add any supplementary semantics beyond the schema, though it aligns with the generic domain usage. Since the schema fully documents the parameter, the baseline of 3 is maintained; no extra meaning is contributed by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Register' with the resource 'custom sending domain', clearly indicating the action and object. It states the domain is registered 'in the workspace' and 'so it can be configured for email traffic', which distinguishes it from related siblings like domain_verify (verification) and domain_zone_file (DNS file) by emphasizing the creation step. The sequencing clue 'before DNS setup and verification' further clarifies its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('Use this before DNS setup and verification'), giving clear timing for invocation. It implies that this is the initial registration step and that subsequent tools handle DNS and verification, but it does not name those alternatives explicitly. The guidance is clear enough for an agent to sequence it correctly, but it lacks an explicit 'when not to use' or mention of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_deleteDelete DomainADestructiveIdempotentInspect
Delete a domain from the workspace when it is no longer needed. Use this to remove old or incorrect domain configurations.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique domain ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| deleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly indicates destructive intent with 'Delete' and 'remove', and the annotations already provide destructiveHint and idempotentHint. It adds the workspace scope, but does not mention irreversibility or side effects on associated records; annotations cover the core destructive 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 two concise sentences with no redundant wording, directly stating the action and common use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, destructive annotations are present, and an output schema is indicated, so return values do not need to be described. The description sufficiently covers the main scenario, though it could mention idempotency behavior more explicitly, but the annotation already handles that.
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 only parameter 'id' is documented in the schema as 'Unique domain ID.' with 100% schema coverage. The description adds no additional meaning beyond the schema, which is acceptable for a single simple parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete') and resource ('domain from the workspace'), clearly distinguishing it from sibling domain tools like domain_get, domain_update, and domain_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear trigger ('when it is no longer needed') and examples ('old or incorrect domain configurations'), but it does not explicitly contrast with domain_update for fixing incorrect configurations, leaving some ambiguity about when deletion is preferable to update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_getGet DomainARead-onlyIdempotentInspect
Fetch full detail for a single domain by ID, including verification and configuration state. Use domain_list to browse all domains.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique domain ID. |
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, idempotentHint, and destructiveHint false, covering safety behavior. The description adds no additional behavioral details beyond those annotations, though it does mention the response content (verification and configuration state).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words, effectively communicating purpose and usage guidance in a clear 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 read operation with one parameter, the description provides all necessary context: what is fetched (full detail including verification/configuration) and how to get an overview (domain_list). No critical information 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 schema fully describes the single parameter 'id' as 'Unique domain ID,' providing clear semantics. The description does not add extra meaning beyond this already sufficient schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches full detail for a single domain by ID, including verification and configuration state, and explicitly contrasts with domain_list for browsing all domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool (for a specific domain's full details) versus when to use domain_list (to browse all domains), making the selection unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_listList DomainsARead-onlyIdempotentInspect
List all domains connected to the current workspace. Use this to audit configured sender domains and choose one for follow-up actions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds the workspace scoping ('connected to the current workspace') and the intended use case, but does not describe return format or pagination behavior. With annotations present, this is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The core action ('List all domains connected to the current workspace') is front-loaded, followed by a purposeful usage hint. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema, annotations covering safety, and zero parameters, the description is fully adequate. It states the scope (current workspace) and the use case, which are the only missing behavioral details. Nothing an agent needs to call this tool correctly is omitted.
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 schema coverage is trivially 100%. Per the baseline for 0 params, a score of 4 is appropriate. The description adds no parameter semantics because none are needed; it correctly describes the list behavior without redundant parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List all domains', and adds scope with 'connected to the current workspace'. It also hints at a use case (audit and choose), making it clearly distinct from sibling operations like domain_get or domain_create. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for when to use the tool: 'Use this to audit configured sender domains and choose one for follow-up actions.' It implies the tool is for listing and selection, but does not explicitly mention when not to use it or name alternatives. This gives clear usage context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_updateUpdate DomainAIdempotentInspect
Update mutable configuration on a domain. Currently the only updatable field is feedbackEnabled — toggle SES bounce and complaint feedback processing on or off without re-verifying the domain.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique domain ID. | |
| feedbackEnabled | No | Enable or disable bounce + complaint feedback processing for this 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 indicate this is a non-read-only, non-destructive, idempotent write. The description adds valuable context beyond annotations by clarifying that the update is limited to mutable configuration and does not require or trigger re-verification. No contradiction with the annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the action, the sole updatable field, and the notable side-effect avoidance of re-verification in a compact and easily parseable format.
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 two-parameter update tool with rich annotations and an output schema, the description covers what changes, what cannot change, and a key behavioral guarantee. It does not explicitly state preconditions like the domain already existing or being verified, but the sibling tool set and context make this a minor 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?
The schema already documents both parameters fully, but the description adds extra meaning by stating that `feedbackEnabled` is currently the only updatable field. This clarifies that `id` serves purely as an identifier and that other domain properties cannot be changed through this tool, which is beyond what the schema alone conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Update mutable configuration on a domain.' It narrows the scope to the single updatable field `feedbackEnabled` and explains its effect as toggling SES bounce and complaint feedback processing. This clearly distinguishes it from sibling domain tools like create, delete, get, list, and verify.
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 intended use is clear: update an existing domain's feedback processing without re-verifying the domain. The description does not explicitly name alternative tools or list when-not-to-use conditions, but the 'currently the only updatable field' wording and sibling tool set make the boundary reasonably obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_verifyVerify DomainAIdempotentInspect
Trigger a verification check for a domain after DNS records are configured. Use this to re-run DNS validation and update verification status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique domain ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and idempotentHint=true. The description adds that it 'update[s] verification status', implying state change. Since annotations cover the main behavioral aspects, the description adds minimal new transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that fully convey the purpose and usage. No fluff or redundant 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?
The tool is simple with one parameter. The description provides enough context for correct invocation. It doesn't describe the response format, but that's not required for such a simple operation and no output schema is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter (id) with 'Unique domain ID.' The description doesn't add further meaning beyond the schema, so it stays at the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('trigger'), identifies the resource ('domain'), and specifies the context ('after DNS records are configured'). It clearly differentiates from sibling tools like domain_get or domain_update by focusing on verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear when-to-use guidance: 'after DNS records are configured' and for 're-run DNS validation'. It doesn't explicitly mention when not to use it, but the context is sufficient for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_zone_fileDomain Zone FileARead-onlyIdempotentInspect
Get the full DNS zone file for a domain. Use this for complete DNS export or to verify all records are correctly configured.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique domain ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (readOnlyHint, idempotentHint, destructiveHint) already disclose the read-only, non-destructive nature. The description is consistent but adds no extra behavioral context beyond what the 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?
The description is concise, containing only two sentences with no redundant information. It effectively communicates the tool's purpose and uses.
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 description is complete for a simple read operation with a single parameter. It explains what the tool returns (full DNS zone file) and why it would be used, without needing to detail the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'id' has a description in the schema ('Unique domain ID') covering 100% of parameters. The description adds no additional detail, so a baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get the full DNS zone file for a domain.' It also specifies two concrete use cases (export and verification), making it distinct from sibling tools like domain_get or domain_verify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool ('Use for complete DNS export or to verify all records are correctly configured'), but does not explicitly contrast it with alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_attachment_getGet Email AttachmentARead-onlyIdempotentInspect
Get a temporary download URL for an email attachment. Use this when you need direct file access for preview or download.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Attachment ID. Returns a temporary download URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds that the URL is temporary, which is useful and consistent with the annotations; no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that states the purpose and usage context without superfluous detail. Well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only operation, describing the return as a temporary URL is sufficient. The output schema is flagged as present, and no critical details like authentication or expiration are necessary given the tool's simplicity and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description ('Attachment ID') is clear. The additional 'Returns a temporary download URL' is output-related, not parameter-specific, so it adds limited semantic value 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?
Clearly states the tool gets a temporary download URL for an email attachment, with a specific resource and action. It is distinguishable from email_get and other email tools by mentioning direct file access for preview/download.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('when you need direct file access for preview or download'), giving clear context. It does not mention when not to use it, but the guidance is sufficient for this simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_draft_createCreate Email DraftAInspect
Create a new email draft (composed but not sent). Drafts can be incomplete — missing recipients, subject, or body. Use email_draft_send later to actually deliver, or email_draft_delete to discard.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | CC recipients. | |
| to | No | Recipient email addresses (may be empty for an incomplete draft). | |
| bcc | No | BCC recipients. | |
| body | No | Plain-text body. | |
| agentId | Yes | Owning agent ID. | |
| subject | No | Subject line. | |
| bodyHtml | No | HTML body. | |
| metadata | No | Arbitrary metadata. | |
| inReplyTo | No | Optional In-Reply-To Message-ID for threading on send. | |
| references | No | Optional References chain for threading. | |
| fromIdentityId | No | Optional EmailIdentity ID to send from. Must belong to this agent and be verified. If omitted, the agent's primary identity is used at send time. Discover available IDs from the `emailIdentities` array returned by agent_get. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, non-destructive, and non-idempotent behavior. The description adds useful context about draft incompleteness and the lifecycle (send/delete later), which enhances transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and to the point, with no fluff or redundant information. It efficiently communicates the essential purpose and lifecycle.
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 an output schema exists (per signal) and the description clearly explains the tool's role and relationship to sending/deleting drafts, nothing more is needed for an agent 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 schema has 100% coverage with descriptions for all parameters, and the description text does not add extra parameter-level meaning. Baseline of 3 is appropriate since the schema already 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 description clearly states the verb 'Create', the resource 'email draft', and the important distinction that it is 'composed but not sent'. It also explicitly differentiates from sibling tools by mentioning later send/delete actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use email_draft_send later to actually deliver, or email_draft_delete to discard', giving clear guidance on when to use this tool versus the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_draft_deleteDelete Email DraftADestructiveIdempotentInspect
Discard a draft. Use this to remove drafts that are no longer needed. Use email_draft_send if you want to deliver instead.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Draft ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| deleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description clearly indicates the destructive nature by using 'Discard' and 'remove'. Annotations support this with destructiveHint=true and readOnlyHint=false. No contradiction or hidden 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?
Description is concise, using two short sentences with no unnecessary words or repetition. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation, the description and annotations provide all necessary context: what it does, when to use it, and how it differs from the send alternative. No critical information 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 only parameter id is fully covered by the schema description 'Draft ID.' The tool description does not add extra meaning beyond the schema, but with 100% schema coverage this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool discards/removes a draft, with the specific resource being email drafts. It also distinguishes itself from email_draft_send, which is the sibling for delivering drafts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool: to remove drafts no longer needed. It also explicitly tells when not to use it and which alternative to use (email_draft_send for delivering).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_draft_getGet Email DraftARead-onlyIdempotentInspect
Fetch full detail for a single draft by ID. Use email_draft_list to browse drafts.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Draft ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful notion that this returns 'full detail' rather than summary info, but it does not go beyond that. With annotations carrying the main burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler: the first states the primary action and target, and the second points to the relevant sibling for an alternative use case. It is front-loaded and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward single-ID fetch tool with a rich output schema and comprehensive annotations, the description is complete. No pagination, filtering, or mutation concerns apply, and the routing to email_draft_list covers the main open decision.
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 single 'id' parameter is documented in the schema itself. The description adds no additional parameter semantics, but none are needed for such a simple, fully self-describing parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Fetch'), resource ('full detail for a single draft'), and the required identifier ('by ID'). It also explicitly differentiates from the sibling tool by routing browse behavior to email_draft_list, so an agent can select this tool correctly.
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 clearly signals when to use this tool: when you already have a draft ID and need full details. It also tells the agent to use email_draft_list for browsing, which explicitly addresses the most likely alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_draft_listList Email DraftsARead-onlyIdempotentInspect
List email drafts with optional filters. Returns lightweight draft records — use email_draft_get for full detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max drafts when listing. Ignored when `id` is provided. | |
| cursor | No | Pagination cursor from a previous list response. | |
| agentId | No | Filter drafts by agent ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds the note about returning 'lightweight draft records', which is minor extra context but does not introduce rate limits, pagination defaults, or other behavioral 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 description is two sentences, concise, and well-structured. It front-loads the core action and immediately provides a helpful pointer to the detail-oriented sibling without any filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a defined output schema and fully documented parameters, the description gives enough context for a simple list operation. It could mention pagination behavior or default limits, but these are not essential given the schema and the pointer to email_draft_get for details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all three parameters (limit, cursor, agentId) fully described. The description's mention of 'optional filters' aligns with the schema but adds no additional semantic detail, 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 clearly states the verb 'List' and the resource 'email drafts', and explicitly distinguishes from email_draft_get by mentioning the lightweight record format and pointing to the sibling for full detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions using email_draft_get when full detail is needed, providing a clear alternative. However, it does not explicitly state when to avoid this tool (e.g., for creating, sending, or deleting drafts), though the sibling list implies those cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_draft_sendSend Email DraftAInspect
Send a draft. Atomically converts the draft to a delivered Message + deletes the draft row. The draft must have at least one recipient, a subject, and a body. Returns the newly-created Message.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Draft ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| messageId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation Contradiction: the description states it 'deletes the draft row,' which conflicts with the destructiveHint=false annotation. The description otherwise adds useful behavioral detail (atomic conversion, delivery, return of new Message), but the contradiction with the annotation is serious and warrants a score of 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler: action, mechanics, preconditions, return value. Every sentence adds necessary information and the core action 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?
With one parameter, an output schema present, and annotations provided, the description covers all necessary operational details: what happens atomically, the deletion side effect, required draft fields, and the returned Message. The agent has enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single 'id' parameter as 'Draft ID' with 100% coverage. The description does not add semantic detail about the parameter beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Send') and resource ('draft'), then explains the atomic transformation of the draft into a delivered Message and the deletion of the draft row. This distinguishes it from siblings like email_send and email_draft_* operations without needing to open 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?
The description communicates the intended use by referencing an existing draft and states the preconditions (recipient, subject, body). It does not explicitly cite alternatives or when-not-to-use scenarios, but the draft-focused language makes the appropriate case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_forwardForward EmailAInspect
Forward an existing email to another recipient by loading the original content first. Use this to share a prior message while preserving context.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address(es) for the forwarded message. | |
| text | No | Optional introductory text to prepend before forwarded content. | |
| agentId | Yes | Agent ID forwarding the email. | |
| originalId | Yes | Original email ID being forwarded. | |
| attachments | No | Optional additional file attachments on the forward (max 20 entries, 25MB total). Original email's attachments are NOT auto-included — pass them explicitly if you want them forwarded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| messageId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and openWorldHint=true, covering mutation and external effects. The description adds the 'loading the original content first' step, which is useful behavioral context. It does not contradict annotations, but adds only minimal extra transparency beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The main action is front-loaded, and the use case is stated in the second sentence. Efficient and well-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?
The description is adequate for a straightforward forward operation. It explains the purpose and process, while the schema covers parameter details and the output schema handles return values. It does not explicitly address attachment behavior, but that is documented in the schema, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all five parameters documented in detail. The description does not add any parameter-specific meaning beyond what the schema provides, so it meets the baseline for fully covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Forward an existing email to another recipient'. It clearly conveys the action and object. However, it does not explicitly distinguish itself from siblings like email_reply or email_send, so it misses the top score for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use this to share a prior message while preserving context' gives a clear use case, but there is no explicit guidance on when not to use it or alternatives to consider. This is implied usage rather than explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_getGet EmailARead-onlyIdempotentInspect
Fetch full detail for a single email by ID, including metadata and body. Use email_list to browse emails in a folder.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Email ID. Returns full metadata and body. |
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, and destructiveHint=false, covering safety and side-effect profile. The description adds the return content (metadata and body), which is useful but not beyond what annotations already imply. No additional behavioral context like error handling or rate limits is provided, but this is a simple read operation where the annotations do most of the work.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. The primary function is front-loaded, and the alternative usage is stated in a separate clause. Every word earns its place, making it efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to explain return values. The tool is simple with one parameter, and the description covers purpose and guidance. It does not mention potential error scenarios or how to obtain the ID, but these are minor for a straightforward getter. Overall, it is sufficient for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for the 'id' parameter already states 'Email ID. Returns full metadata and body.', which fully covers the semantics. The tool description repeats this but adds no new information. Given 100% schema coverage, the baseline of 3 is appropriate; the description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'full detail for a single email by ID', specifying the content (metadata and body). It also differentiates itself from email_list by naming it as the browsing tool, which is a sibling. This makes the purpose unambiguous and distinguishes it from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs the agent to 'Use email_list to browse emails in a folder', which is a clear alternative for a related task. However, it does not cover other potential alternatives like email_search or email_thread_get, but for its specific role (fetching a single email by ID) the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_labelLabel EmailAIdempotentInspect
Add and/or remove labels on one message — the agent's workflow state. Use this to mark mail read/unread (read/unread), archive it (archived), or apply your own tags, then filter with email_list's labels. Supply at least one of addLabels/removeLabels. One message per call: there is no batch form.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the message to relabel. | |
| addLabels | No | Labels to add. Adding `read` removes `unread` and vice versa — one state under two names, and a message always carries exactly one of them. | |
| removeLabels | No | Labels to remove. Removing `unread` marks the message read (and vice versa); a message is never left with neither. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds valuable behavioral context: labeling is the 'agent's workflow state,' read/unread are mutually exclusive states, and there is no batch form. It does not contradict the readOnlyHint=false or idempotentHint=true annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it opens with the action, then provides usage context and constraints. Every sentence earns its place—no filler or redundant restating of the tool name.
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 rich schema descriptions, annotations, and presence of an output schema, the description covers all essential operational constraints: required labels, one-message limit, and integration with email_list. There are no critical gaps for an agent to call the tool 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 the baseline is 3. The description adds extra meaning by explaining the archive label (`archived`), supporting custom tags, and restating the at-least-one constraint. This helps agents understand valid label values beyond parameter names.
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: 'Add and/or remove labels on one message.' It also clarifies the intended use cases—read/unread, archive, custom tags—and distinguishes the tool from related operations by pointing to email_list's labels.
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 clear usage context: mark read/unread, archive, apply tags, and filter via email_list. It also states key constraints: supply at least one of addLabels/removeLabels and one message per call. It does not explicitly name alternative sibling tools, but the guidance is clear enough for an agent to know when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_listList EmailsARead-onlyIdempotentInspect
List emails with cursor pagination. Returns lightweight per-email records plus a pagination object — pass pagination.nextCursor back as cursor for the next page. Use email_get for the full body, email_search to find specific messages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max emails to return per page (1-100, default 20). | |
| cursor | No | Opaque pagination cursor from a previous response's `pagination.nextCursor`. Omit for the first page. | |
| labels | No | Only return messages carrying ALL of these labels. System labels: `unread`, `read`, `archived`, `spam`. Case-insensitive. Use email_label to change them. | |
| agentId | No | Filter emails by agent ID. Agent-scoped keys are already limited to their own agent; master keys see the whole workspace unless filtered. | |
| includeSpam | No | Include messages classified as spam on arrival. Excluded by default. Naming `spam` in `labels` also counts as asking for it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful behavioral detail by noting it returns lightweight per-email records plus a pagination object and does not return full bodies, which supplements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are tight and highly informative, covering return shape, pagination flow, and pointers to sibling tools without any fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a paginated list tool: it explains the return style, pagination continuation, and how to get full content or search, which is exactly the context an agent needs. The output schema exists, so the description does not need to enumerate the record 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 five parameters are already well documented. The description does not need to add much; it only reinforces the cursor pagination semantics, which are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List emails') and clearly distinguishes itself from email_get and email_search by noting what it returns (lightweight records with pagination) versus what those siblings do. An agent can immediately tell this apart from related email 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?
Explicitly tells the agent when to use alternatives: use email_get for the full body and email_search to find specific messages. It also gives the pagination workflow by instructing to pass pagination.nextCursor back as cursor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_replyReply EmailAInspect
Reply to an existing email thread by first loading the original message and setting threading headers. Use this when you need a proper in-thread response.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | Optional HTML content for the reply body. | |
| text | Yes | Plain-text content for your reply message. | |
| agentId | Yes | Agent ID sending the reply. | |
| replyAll | No | When true, include additional participants from the original email. | |
| originalId | Yes | Original email ID being replied to. | |
| attachments | No | Optional file attachments on the reply (max 20 entries, 25MB total). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| messageId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it loads the original message and sets threading headers, which are meaningful side effects. It does not mention idempotency, delivery outcomes, or potential failures, but annotations already indicate non-read-only, non-idempotent 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 concise, using two sentences with no redundant or irrelevant content. It communicates the core purpose and key behavior efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient to invoke the tool given the schema and sibling context. It could mention the return value or error scenarios, but the presence of an output schema and required parameters makes the current description adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides full parameter descriptions, so the tool description adds little beyond referencing the reply context. The schema's per-field descriptions are thorough, including attachment semantics, which covers the parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool replies to an existing email thread, and distinguishes it by noting it loads the original message and sets threading headers. This differentiates it from related tools like email_send or email_forward.
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 says 'Use this when you need a proper in-thread response,' which gives a clear usage condition. It does not explicitly contrast alternatives, but the guidance is sufficient for the common case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_searchSearch EmailsARead-onlyIdempotentInspect
Search messages by content. Fulltext mode (default) substring-matches subject/body/addresses of EMAIL messages and returns {items, pagination} with cursor paging. Semantic mode ranks by vector-embedding similarity and returns {results} scored 0-1 — each result spans ANY channel (check the channel field) and includes the message id for email_get / email_thread_get follow-ups.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Search mode. `fulltext` (default) does substring matching over subject/body/addresses of EMAIL messages and supports cursor pagination. `semantic` ranks by vector-embedding similarity — better for meaning-level questions ("emails about the contract renewal") — but searches messages across ALL channels (each result carries a `channel` field) and does not paginate. | |
| limit | No | Max results (fulltext: 1-100, default 20; semantic: 1-50, default 10). | |
| query | Yes | Search query text. | |
| cursor | No | Pagination cursor from a previous fulltext response's `pagination.nextCursor`. Fulltext mode only. | |
| labels | No | Only return messages carrying ALL of these labels. System labels: `unread`, `read`, `archived`, `spam`. Case-insensitive. Use email_label to change them. | |
| agentId | No | Filter results to a specific agent. | |
| threshold | No | Minimum similarity score 0-1 (semantic mode only, default 0.7). | |
| includeSpam | No | Include messages classified as spam on arrival. Excluded by default. Naming `spam` in `labels` also counts as asking for it. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, and non-destructive behavior, and the description aligns with these by describing a pure search operation. It adds important behavioral context such as the output shape, pagination differences, and the fact that semantic mode can return non-email results. No contradictions exist between the description and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—two sentences—and front-loads the core purpose ('Search messages by content') before explaining mode-specific details. It is well-structured, covering fulltext mode's substring matching and cursor pagination, then semantic mode's similarity ranking and multi-channel scope, without any redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (dual modes, 8 parameters, divergent return shapes), the description is sufficiently complete. It explains both modes, their outputs, and parameter nuances (like includeSpam and labels), and even mentions follow-up actions. Combined with the thorough schema, an agent has all necessary information to call the tool 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 schema provides 100% coverage for all 8 parameters with detailed descriptions, including mode-specific behavior (e.g., limit defaults, threshold relevance, labels system). The main description adds a high-level overview of mode differences and return structures, but most parameter semantics are already well-documented in the schema. The description does reinforce key points like default mode and pagination, which adds slight value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'searches messages by content' and distinguishes between fulltext and semantic modes, which differentiates it from sibling tools like email_list (which likely lists without content search) and email_get (which retrieves a specific message). The verb 'search' is specific and the resource 'messages' is explicit, leaving no ambiguity about the tool's primary function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each mode: fulltext for substring matching on emails, semantic for similarity across all channels. It also directs users to 'check the channel field' for semantic results and suggests follow-up via email_get or email_thread_get, giving clear context on tool selection. Parameter behaviors like cursor pagination (fulltext only) and threshold (semantic only) are explained, so an agent knows exactly when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_sendSend EmailAInspect
Send a new outbound email from the agent mailbox. Use this when you need to compose and deliver a message with optional CC, threading headers.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Optional CC recipient email addresses. | |
| to | Yes | List of recipient email addresses. | |
| bcc | No | Optional BCC recipient email addresses. | |
| body | Yes | Plain-text body content for the email. | |
| agentId | Yes | Agent ID sending the email. | |
| headers | No | Optional custom email headers as key-value pairs (e.g. {"X-Campaign": "onboarding"}). Merged with Anima's own threading/compliance headers, which win on conflict. | |
| subject | Yes | Subject line for the outgoing email. | |
| bodyHtml | No | Optional HTML body content for rich email formatting. | |
| inReplyTo | No | Optional message ID to set the In-Reply-To header for threading. | |
| references | No | Optional References chain, oldest first: RFC 5322 Message-IDs (an email's `externalId`), not Anima message ids. Omit it on a reply: the chain is derived from `inReplyTo`. | |
| attachments | No | Optional file attachments (max 20 entries, 25MB total). Each entry must provide either `content` (base64-inline) or `url` (public URL for server-fetch). Use `contentId` for inline images referenced in HTML via `cid:` URIs. | |
| fromIdentityId | No | Optional EmailIdentity ID to send from. Must belong to this agent and be verified. If omitted, the agent's primary identity is used. Use this to route different message types through different identities (e.g. transactional from @brawz.ai, support from @support.brawz.ai). Discover available IDs from the `emailIdentities` array returned by agent_get. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| messageId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating, non-idempotent, open-world operation, so the description is not burdened with that. It adds the useful 'agent mailbox' context and positions this as compose-and-deliver, but does not disclose traits such as immediate external delivery, irreversibility, or sending 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?
Two front-loaded sentences with no fluff. The core action and sender scope come first, and the usage cue is placed in the second 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 complex 12-parameter tool with a rich schema, an output schema, and useful annotations, the description is adequate. It would be more complete if it pointed to email_reply, email_forward, or email_draft_send for non-new-message cases, but the schema fills in the invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter in detail. The description only mentions optional CC and threading headers, which adds slight emphasis but 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?
The description clearly states the verb ('Send'), the resource ('a new outbound email'), and the scope ('from the agent mailbox'). Saying 'new' differentiates it from reply/forward/draft-send siblings, though it does not explicitly name those alternatives.
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?
'Use this when you need to compose and deliver a message' gives a clear context for when the tool applies. It does not mention when not to use it (e.g., when replying, forwarding, or sending an existing draft), so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_thread_getGet Email Thread(s)ARead-onlyIdempotentInspect
Fetch all email messages in one or more threads. Pass id for a single thread or ids for multiple. Returns messages ordered within each thread. Uses the messages endpoint filtered by threadId + channel=EMAIL under the hood.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Single thread ID to fetch. Pass either `id` or `ids`. | |
| ids | No | Multiple thread IDs to fetch in parallel. Pass either `id` or `ids`. | |
| limit | No | Optional max messages per thread. | |
| agentId | No | Optional agent scope filter (only return messages owned by this agent). |
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, idempotentHint, and destructiveHint false, so the base behavior is covered. The description adds useful context about returning messages ordered within each thread, but does not disclose additional side effects, rate limits, or authorization requirements 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?
The description is compact and well-structured: it states what the tool does, how to specify thread selection, and what the response ordering will be. No unnecessary words or redundant content are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and all input parameters fully described in the schema, the description provides enough context for correct invocation. It also clarifies the single-vs-multiple thread usage and ordering behavior, so no critical operational details are 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 input schema covers all four parameters with descriptions, and schema coverage is 100%. The main description mostly reiterates the id/ids distinction without adding deeper meaning for limit or agentId, so it does not exceed the baseline set by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches all email messages in one or more threads, using a specific verb and resource. It is distinct from siblings like email_get or email_list based on the thread-scoped behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear parameter usage (id vs ids, ordering) but does not explicitly compare this tool to alternatives such as email_search or email_list. The use case is implied rather than stated with explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_connectConnect Browser ExtensionAInspect
Create a short-lived, single-use connect URL that links a browser extension (or a headless Puppeteer worker) to an Anima agent. Returns connectUrl — hand it to the extension to complete the handshake before exchangeExpiresAt. The response carries no token or secret. Auth: with a master key you MUST pass agentId; with an agent key OMIT agentId (the server resolves it from the key). ttl is optional; a value above the org's maximum is rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Requested lifetime of the connection. A value longer than the org's policy maximum is rejected (not silently shortened); omit to use the policy default. | |
| agentId | No | Agent to connect the extension to. REQUIRED when authenticating with a master key (mk_); OMIT when using an agent key (ak_/oat_) — the server resolves the agent from the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| policy | Yes | |
| agentId | Yes | |
| expiresAt | Yes | |
| connectUrl | Yes | |
| exchangeExpiresAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Clearly describes the creation side effect, the returned URL, the handshake deadline, and notes that the response carries no token or secret. It aligns with the readOnly=false annotation; slightly less detail is given about what happens after the handshake completes, but the core behavior is transparent.
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 compact, front-loaded with the core action and result, and every sentence adds meaningful usage or behavioral detail. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the two-parameter schema and available annotations, the description fully covers what the tool does, how to authenticate, what the response contains, and the expiry constraint. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the schema and reinforced in the description. The agentId authentication nuance and ttl enum/rejection behavior are explicit, making the semantics unambiguous.
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 ('Create') and the exact resource (short-lived, single-use connect URL) for linking a browser extension or Puppeteer worker to an Anima agent. The returned `connectUrl` purpose and handshake context clearly distinguish it from other 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?
Provides explicit usage conditions: agentId MUST be passed with a master key and OMITTED with an agent key, ttl is optional, and values above the org maximum are rejected. This gives clear when-to-use and how-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inbox_createCreate InboxAInspect
Create a new email inbox (mailbox) that can receive mail immediately at its address. Choose a username and domain or let the platform generate them. Requires master key access.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Domain for the inbox address. Uses the platform default (agents.useanima.sh) when omitted. Custom domains must already be registered and verified — see domain_list. | |
| agentId | No | Agent ID to associate with this inbox. Inbound mail to the inbox is attributed to this agent. | |
| username | No | Local part of the inbox email address (letters, numbers, dots, hyphens, underscores; normalized to lowercase; must not start/end with a dot or hyphen). A random local part is generated when omitted. | |
| displayName | No | Human-readable display name for the inbox (max 128 characters). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the immediate receive capability and the ability to choose or auto-generate username/domain. Includes a permission requirement (master key access), but does not mention idempotency or error 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 concise sentences with no redundant 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?
Provides enough for a simple creation operation, but does not mention the return value or error scenarios. Output schema likely covers this, but description alone is slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters are described with constraints, and the description reinforces the domain verification requirement. Schema coverage is 100%.
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 clearly it creates a new email inbox that can receive mail immediately. Distinguishes from other inbox operations by specifying creation.
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?
Does not explicitly compare to sibling tools like inbox_get or inbox_update, but the action of creating is unambiguous. No guidance on when to use vs alternatives, so moderate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inbox_deleteDelete InboxADestructiveIdempotentInspect
Permanently delete an inbox and its mailbox. Mail sent to the address after deletion bounces. This cannot be undone. Requires master key access.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique inbox ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| deleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint, readOnlyHint false, idempotentHint, openWorldHint), the description discloses important behavioral details: the deletion is permanent, the mailbox is removed along with the inbox, mail bounces after deletion, and master key access is required. This substantially adds context for safe invocation.
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?
Each sentence earns its place: the first states the action, the second adds an important side effect, the third emphasizes irreversibility, and the fourth states the auth requirement. The most important safety-relevant information is front-loaded and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a high-risk destructive operation with only one parameter, and the description covers what is destroyed, irreversibility, post-deletion behavior, and the auth prerequisite. The output schema exists and the parameter schema is fully documented, so nothing critical is left implicit 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?
There is only one parameter, `id`, and the schema describes it as 'Unique inbox ID.' The description does not add extra parameter-level semantics, but because schema coverage is 100%, the missing description-level parameter detail is not a deficiency beyond the established baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('permanently delete') on a specific resource ('inbox and its mailbox'), which clearly differentiates it from sibling tools like inbox_get, inbox_update, and inbox_create. It also adds concrete behavioral scope, so an agent knows exactly what resource is affected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear contextual guidance by stating that the operation is permanent, affects the mailbox, and requires master key access. It does not explicitly name when-not-to-use or alternatives, but deletion is a distinct action with no close functional substitute among the siblings, so the implied usage is clear and adequately supported.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inbox_getGet InboxARead-onlyIdempotentInspect
Fetch full detail for a single inbox by ID, including its email address, display name, and associated agent. Use inbox_list to browse all inboxes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique inbox ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description adds no new behavioral transparency. The description is consistent with the annotations, but does not go beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences), front-loaded with the action and resource, and includes a helpful pointer to the list alternative. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool is a simple get and there is no output schema, the description provides a reasonable indication of what the response will contain. It could be slightly more explicit about error behavior or exact response structure, but it is sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'id' is described as 'Unique inbox ID.' Schema coverage is 100%, so the baseline is 3. The description does not add extra semantics beyond the field name and short definition.
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 ('Fetch full detail') and a specific resource ('a single inbox by ID'), clearly distinguishing it from inbox_list. The inclusion of expected fields ('email address, display name, associated agent') further clarifies the 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?
Explicitly differentiates from the sibling tool inbox_list by saying 'Use inbox_list to browse all inboxes.' This gives the agent clear guidance on when to use this tool versus the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inbox_listList InboxesARead-onlyIdempotentInspect
List inboxes in the workspace with cursor pagination and optional free-text search. Returns the address, display name, and agent association for each inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max inboxes to return per page (1-100, default 20). | |
| query | No | Free-text search filter matched against inbox email addresses and display names. | |
| cursor | No | Pagination cursor from a previous list response (pagination.nextCursor). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the bar is lower. The description adds useful behavioral context beyond the annotations by mentioning cursor-based pagination, optional search, and the specific attributes returned, without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. It front-loads the core action ('List inboxes'), then adds pagination/search behavior, then states the return fields. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list tool with an output schema and 100% schema coverage, nothing critical is missing. Safety is covered by annotations, parameter semantics by the schema, and return shape by the output schema; the description completes the picture with pagination and search 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%, and each parameter already has a clear description. The tool description adds only that search is 'free-text' and that pagination is cursor-based, which mirrors the schema. This meets the baseline but does not go beyond what the schema already communicates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource — 'List inboxes in the workspace' — and adds distinguishing details: cursor pagination, optional free-text search, and the returned fields. This clearly separates it from siblings like inbox_get, whose single-resource purpose is different, even without an explicit comparison.
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 clearly implies when this tool is appropriate: when a caller needs to enumerate inboxes, especially with search or pagination. It does not explicitly name alternatives or exclusion conditions, but the 'cursor pagination' and 'optional free-text search' phrasing gives enough context for an agent to choose it over inbox_get or email_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inbox_updateUpdate InboxAIdempotentInspect
Update the display name or agent association of an inbox. Pass null for a field to clear it (unlink the agent / remove the display name); omitted fields are left unchanged. The email address itself cannot be changed. Requires master key access.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique inbox ID. | |
| agentId | No | Agent ID to associate with the inbox. Pass null to unlink the current agent. Omit to leave unchanged. | |
| displayName | No | New human-readable display name (max 128 characters). Pass null to clear it. Omit to leave unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating operation, but the description adds meaningful behavioral detail: partial update semantics (omitted fields unchanged), clearing behavior via null, unlink semantics, immutability of the email address, and the master key requirement. This is exactly the kind of context an agent needs beyond the raw 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?
Two sentences, no filler. The first sentence front-loads the operation and target fields; the second compactly conveys clear/omit semantics, the immutability constraint, and the access requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter update tool with a complete schema, a clear output schema, and annotations covering mutation/idempotency, the description provides the essential additional context: partial update behavior, clearing behavior, email immutability, and required access level. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents each parameter with null vs. omit semantics. The description restates these semantics rather than adding new parameter-level meaning. It does clarify the overall purpose of the update and the unlink/remove behavior, but that is more purpose-level than parameter-level.
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 the resource ('inbox') and specific verb ('update'), and immediately scopes what can be changed ('display name or agent association'). It also states what cannot be changed ('The email address itself cannot be changed'), disambiguating from other inbox operations like inbox_create, inbox_delete, inbox_get, and inbox_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use the tool: to modify an existing inbox's display name or agent association. It provides usage details about null vs. omitted fields and notes the master key access requirement. It does not explicitly name alternative tools for creation or deletion, so it falls 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.
phone_call_createPhone Call (Live)AInspect
Place a live phone call and have a real conversation. The tool stays open for the entire call duration. As the caller speaks, you receive live transcript chunks via progress notifications; when the caller finishes a turn (server emits isFinal: true), an elicitation prompt asks you what the agent should say next. You respond with say (the exact text to speak) and optional endCallAfterSpoken: true to hang up after the line. Returns the full transcript when the call ends. Requires the connecting MCP client to support elicitation — without it, the tool errors out immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination phone number in E.164 format. | |
| agentId | No | Required when the API key / OAuth grant is user-bound (no agentId in the auth context, e.g. a master key or a user-consented Anima Connect grant) — picks which of the org's agents places the call. Ignored when the auth is already agent-bound (the bound agent wins; mismatches are rejected with AGENT_MISMATCH). Use agent_list to find valid IDs. | |
| voiceId | No | Optional voice override. Use voice_list for valid IDs; the catalog is multilingual and each entry carries an audio preview. | |
| fromNumber | No | Optional source phone in E.164. Default: the calling agent's primary phone identity. | |
| agentConfig | No | Opt in to the server-side conversation loop. When present (even as `{}`), the Anima API runs the LLM-backed conversation loop on each caller turn and speaks the reply — the MCP tool just records both sides of the transcript and returns it when the call ends. **Required when the connecting MCP client doesn't implement elicitation** (e.g. Claude Code returns `-32600 Elicitation not supported`). Omit ONLY if you have your own bot ready to subscribe to MCP elicitation requests and reply via the `say` field per turn. | |
| firstMessage | Yes | Opening line the agent speaks when the call is answered. Be natural — this is what the human hears first. | |
| maxDurationSec | No | Hard cap on total call duration in seconds. Default 600 (10 min). Max 1800 (30 min). | |
| silenceTimeoutSec | No | If no caller utterance arrives within this many seconds (measured from the last agent utterance), the call hangs up automatically. Default 30. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when `endedReason` is `error` or `elicitation_unsupported` — carries the underlying code+message so callers can distinguish capability gaps from real failures. |
| callId | Yes | ID of the placed call. `null` if the call ended before the carrier assigned an ID (e.g. WS auth failure or pre-ring termination) — use `endedReason` to understand why. |
| transcript | Yes | Full transcript with role labels in chronological order. |
| durationSec | No | Total call duration in seconds. |
| endedReason | Yes | Why the call ended (hangup, timeout, error, etc.). |
| latencyTurns | No | Per-turn latency breakdown captured by the API's LatencyTracker. Each entry is a turn; the t_*_ms fields are absolute millisecond timestamps. Diff adjacent marks to compute stage durations — common ones: perceived_latency_ms = t_speak_dispatch_ms - t_caller_speech_end_ms (basic) or t_tts_first_tx_ms - t_caller_speech_end_ms (premium), endpoint_wait_ms = t_final_ms - t_caller_speech_end_ms, ws_round_trip_ms = t_ws_recv_ms - t_ws_send_ms. Omitted if the API didn't send latency data (pre-Wave-3K servers). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the call stays open, that the tool returns the full transcript, and that it errors out if elicitation is unsupported. It adds meaningful behavioral detail beyond the readOnly/destructive/idempotent annotations, though it does not mention potential costs or billing implications of placing an outbound call.
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 long but well-structured and information-dense; every sentence adds useful detail. It could be slightly more concise, but the complexity of the tool justifies the 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?
The description covers the tool's purpose, live behavior, parameter nuances, error conditions, and return value (full transcript). It is complete enough for an agent to use the tool safely and effectively without additional external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters are fully documented, including defaults, max lengths, valid formats, and conditional behavior. The agentId and agentConfig parameters receive especially thorough explanations that go well beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool places a live phone call and manages a real conversation, which is a specific verb and resource. It distinguishes itself from sibling tools like phone_call_get, phone_call_list, and phone_call_recording_get by focusing on call creation and live interaction.
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 explains when to use the server-side agentConfig loop versus when to rely on client elicitation, and explicitly references agent_list and voice_list for valid IDs. It also notes the requirement for the MCP client to support elicitation, giving clear operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone_call_getGet Phone CallARead-onlyIdempotentInspect
Get full detail for a single phone call: status, duration, participants, AI-generated summary (one-liner, topics, action items, decisions, open questions, next steps), and quality score. The summary is generated once on first read after post-call processing and cached.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The call ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description's additional disclosure about summary generation ('generated once on first read after post-call processing and cached') adds valuable behavioral nuance about timing and caching. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence front-loads the core return fields; the second adds the behavioral nuance about summary caching. Could potentially split the field list for scannability, but overall it uses every word efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and annotations cover safety and idempotency, reducing the description's burden. The description covers the key fields and the summary behavior. It doesn't mention how to obtain the call ID or pagination, but neither is necessary for a single-get tool with one parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage and unambiguously documents the only parameter (id: 'The call ID.'). The description adds no new parameter-specific details beyond the obvious, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), resource ('phone call'), scope ('single'), and enumerates the exact fields returned (status, duration, participants, AI summary components, quality score). This clearly distinguishes it from sibling tools like phone_call_list, phone_call_recording_get, and phone_call_transcript_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool — when a caller needs the full detail of a single call, especially the AI summary and quality score. However, it does not explicitly name alternatives or state when not to use it (e.g., phone_call_list for browsing calls), leaving a small inference step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone_call_listList Phone CallsARead-onlyIdempotentInspect
List phone calls with optional filters. Returns lightweight call records — for full call detail including summary and score, use phone_call_get.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 20). | |
| offset | No | Offset for pagination. | |
| status | No | Filter by call state (INITIATING, RINGING, ACTIVE, ENDED, etc.). | |
| agentId | No | Filter by agent ID. | |
| direction | No | Filter by call direction. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by stating it returns 'lightweight call records' and points to phone_call_get for more complete data, which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The core purpose is front-loaded, and the pointer to phone_call_get is placed as a natural follow-up, making the structure efficient and easy to scan.
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 listing tool with an output schema present, extensive annotations, and a clear sibling pointer, the description is complete. An agent has enough information to decide when to call this tool, what it returns, and when to choose phone_call_get instead.
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 each of the five parameters already described in the input schema. The description only says 'optional filters' and does not add parameter-level meaning, so the schema carries the heavy lifting and the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List phone calls with optional filters.' It also distinguishes itself from phone_call_get by noting it returns lightweight call records rather than full detail, so an agent can tell the two apart without opening the schema.
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 clearly states that phone_call_get should be used when full call detail including summary and score is needed. It does not explicitly cover all sibling tools or exclusion cases, but the core alternative and the decision factor are provided clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone_call_recording_getGet Phone Call RecordingARead-onlyIdempotentInspect
Get a time-limited download URL for a call recording (WAV format). The URL expires after 1 hour. Recording must have been enabled during the call.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The call ID. |
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 indicate read-only, idempotent, and non-destructive behavior, and the description does not contradict this. It adds useful behavioral details about the URL expiring after 1 hour and the recording-enabled prerequisite, which go beyond the annotations and help the caller understand side effects and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with three short sentences that each convey essential information: the action and format, the expiration, and the prerequisite. There is no redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema displayed), the description sufficiently covers the key context: what is returned (a time-limited URL), the format, and a key condition for success. It does not describe error cases or response structure, but those are not essential for a straightforward get operation and would not significantly hinder correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, id, is described in the schema as 'The call ID,' and the tool description does not add further semantic detail beyond that. Since schema coverage is 100% for the parameter, the baseline score of 3 is appropriate; the description does not need to elaborate further but also does not add extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get a download URL), the resource (call recording), and the format (WAV), making the tool's purpose unambiguous. It also distinguishes the tool from related ones like phone_call_transcript_get by focusing on the recording URL rather than transcript content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite for use ('Recording must have been enabled during the call') and notes the URL is time-limited, which helps set expectations. However, it does not explicitly mention alternative tools or when to prefer this one over siblings like phone_call_get or phone_call_transcript_get, leaving some usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone_call_transcript_getGet Phone Call TranscriptARead-onlyIdempotentInspect
Get the full transcript of a phone call with speaker labels, timestamps, and confidence scores. Available after the call ends and transcription completes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The call ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior, so the description's added availability timing and transcript content are useful extras. There is no contradiction with annotations, and the description appropriately clarifies that this tool is not usable during an active call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core purpose front-loaded. The availability condition is a valuable addition and is placed second without bloating the 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?
For a one-parameter, read-only tool with an output schema and strong annotations, the description covers everything needed: what the tool returns and when it can be called. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the only parameter ('id' as the call ID) with 100% coverage. The description adds no parameter-specific detail, but none is really needed for a single, clearly documented field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and resource ('full transcript of a phone call'), with details on content (speaker labels, timestamps, confidence scores). This sets it apart from sibling tools like phone_call_get and phone_call_recording_get, which serve different retrieval needs.
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 temporal constraint: 'Available after the call ends and transcription completes.' This tells an agent when it is appropriate to call this tool. It does not explicitly name alternatives, but the scope is clear enough to route the agent away from recording or call metadata tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone_number_listList Phone NumbersARead-onlyIdempotentInspect
List phone numbers assigned to an agent. Each result includes status and capability flags (sms/mms/voice).
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | Agent whose phone numbers to list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds that results include status and capability flags, which is useful but does not go beyond what an output schema would supply. No additional behavioral context such as pagination or filtering is provided, so a mid-range score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The primary action and scope are front-loaded, and the second sentence adds meaningful output context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list operation with one well-documented parameter, an output schema, and strong annotations, the description is sufficiently complete. Nothing critical is missing for an agent to select and invoke the tool 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%, with agentId clearly documented as 'Agent whose phone numbers to list.' The description essentially repeats the same agent scoping, adding no new meaning beyond the schema. Baseline 3 is correct when the schema already documents the parameter well.
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: 'List phone numbers assigned to an agent.' It also adds output detail (status and capability flags), making the tool's purpose unmistakable. It clearly distinguishes from siblings like phone_number_provision and phone_number_release.
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 makes the context clear: this lists phone numbers for a specific agent, so an agent can infer when to call it. However, it does not explicitly contrast with alternatives such as phone_number_provision, phone_number_release, or phone_call_list, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone_number_provisionProvision Phone NumberAInspect
Provision a new phone number from the carrier pool and assign it to an agent. Note: provisioning a number costs money on the underlying carrier; do not call speculatively. Use countryCode / areaCode / capabilities to constrain selection.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | Agent ID to assign the provisioned phone number to. | |
| areaCode | No | Preferred area code for the phone number. | |
| countryCode | No | ISO 3166-1 alpha-2 country code for number selection (default US). | |
| capabilities | No | Optional capability list (sms, mms, voice) the number must support. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false), non-idempotent. Description adds the crucial behavioral detail that provisioning incurs a monetary cost, which is not in annotations. This is significant context for an agent to avoid wasteful calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose, followed by the cost warning and selection guidance. No fluff, each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values are covered. The description covers purpose, cost, and selection constraints. It does not explicitly mention prerequisites like agent existence, but that is implied by the required agentId. It is sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-described in schema. Description mentions the constraint parameters but adds little beyond the schema's descriptions, which already cover them. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states a specific verb (provision) and resource (phone number), and explains it assigns to an agent. Distinguishes from siblings like phone_number_list and phone_number_release by indicating it creates a new number.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when not to call (do not call speculatively) and how to constrain selection (use countryCode / areaCode / capabilities). Does not explicitly mention alternatives, but the context of cost and constraints implies appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone_number_releaseRelease Phone NumberADestructiveIdempotentInspect
Release a previously provisioned phone number back to the carrier pool. Use this when cleaning up unused numbers. Released numbers cannot be recovered.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | Agent ID that currently owns the phone number. | |
| phoneNumber | Yes | E.164 formatted phone number to release. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| deleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive, but the description adds critical behavioral context: released numbers cannot be recovered. It also clarifies that only previously provisioned numbers are affected, which goes beyond the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the main action, then usage guidance, then a critical consequence. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter destructive operation, the description covers what the tool does, when to use it, and the most important post-condition (unrecoverable). Since an output schema exists, return values do not need to be explained 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 description coverage is 100%, so the input schema already fully documents agentId and phoneNumber. The description does not add parameter-level detail beyond what the schema provides, which meets the baseline but does not exceed it.
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 verb ('Release') and resource ('previously provisioned phone number'), and states the destination ('back to the carrier pool'). This clearly distinguishes the operation from provisioning or listing phone numbers.
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 actionable usage context: 'Use this when cleaning up unused numbers.' It does not name alternative tools or explicit when-not-to-use conditions, but the stated use case is sufficiently clear for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sms_getGet SMSARead-onlyIdempotentInspect
Fetch full detail for a single SMS by ID (includes its threadId for joining the conversation). Use sms_list to browse multiple SMS messages.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | SMS message ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds meaningful context by specifying that the response includes threadId for joining the conversation, which helps the agent understand expected output. No contradictions or hidden behaviors are suggested.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. The first sentence front-loads the key action and a valuable output detail, and the second sentence cleanly points to the sibling tool for the broader use case.
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 definition is complete for a simple single-fetch tool: one parameter is fully documented in the schema, an output schema exists to describe returns, annotations cover safety, and the sibling tool distinction is clear. Nothing necessary for 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 parameter 'id' is already documented as 'SMS message ID.' The description does not add format or source details beyond the schema, so it meets but does not exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific verb 'Fetch' and resource 'full detail for a single SMS by ID', and distinguishes it from sms_list by noting that sms_list is for browsing multiple messages. Including the threadId detail further sharpens the 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?
The description explicitly tells the agent when to use this tool versus sms_list: 'Use sms_list to browse multiple SMS messages.' This directly routes to the appropriate sibling for the alternative use case, leaving no ambiguity about scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sms_listList SMSARead-onlyIdempotentInspect
List SMS messages with optional filters. Each result includes its threadId for joining the conversation. Use sms_get for full single-message detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max SMS messages to return. | |
| cursor | No | Pagination cursor from a previous list response. | |
| agentId | No | Filter SMS by agent ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds minimal behavioral context beyond that, mentioning the inclusion of threadId but not expanding on side effects or edge cases. It does not contradict the annotations, so a neutral score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant words. It starts with the core purpose ('List SMS messages') and immediately provides the most important context, making it highly 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?
For a list operation with a simple schema, the description covers all essential information: the action, the resource, the optional filters, the presence of threadId, and a pointer to the related sms_get tool. No critical details are 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 schema provides full descriptions for all parameters, so the baseline is 3. The description adds the phrase 'optional filters', which hints that the parameters are filter-like and optional, but does not provide additional detail beyond the schema. This is a slight enhancement but not significant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists SMS messages and includes the key attribute threadId. It also distinguishes itself from sms_get by mentioning that tool for full message detail, making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use sms_get for full single-message detail', providing an alternative when needed. It implies when to use this tool for listing, though it does not detail specific use cases or prerequisites, but the list vs. get distinction is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sms_sendSend SMSAInspect
Send an SMS to a phone number, or an MMS by passing mediaUrls. The agent must have a provisioned phone number. Use this for transactional texts or conversational messaging.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number in E.164 format (e.g. +14155551234). | |
| body | Yes | Message body. SMS character limits apply (~160 chars per segment). | |
| agentId | Yes | Agent ID sending the SMS. The agent must have a provisioned phone number. | |
| mediaUrls | No | Optional array of media URLs for MMS. Pass one URL for a single image/file; multiple for multi-part MMS. Carrier limits apply. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| messageId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-idempotent operation (readOnlyHint=false, idempotentHint=false). The description adds the prerequisite that the agent must have a provisioned phone number, which is useful beyond the annotations. It doesn't disclose failure modes or costs, but given the annotations cover the basic behavioral profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no fluff. The action is front-loaded, followed by a key requirement and usage context. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, output schema present, annotations available), the description covers purpose, usage, and a prerequisite. It doesn't explain return values, but the output schema handles that. It could mention rate limits or costs, but those are not essential for a correct call. The description is adequate and slightly above minimum.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are already well-documented in the schema. The description mentions mediaUrls for MMS, but this is already in the schema. The description adds no new parameter-specific information, 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 uses a specific verb ('Send') and resource ('SMS' or 'MMS'), and distinguishes from sibling tools like sms_get, email_send, and phone_call_create by explicitly mentioning SMS/MMS and mediaUrls. It clearly states the action and the optional MMS variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use this for transactional texts or conversational messaging.' It doesn't explicitly mention when not to use it or name alternatives, but the context is clear enough to guide selection among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sms_thread_getGet SMS ThreadARead-onlyIdempotentInspect
Get one SMS/MMS conversation with its message history, oldest first. Use sms_thread_list to find thread IDs (or take threadId off any SMS). For a conversation longer than limit, returns its most recent messages; page deeper history with sms_list.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Thread ID (use sms_thread_list to find IDs). | |
| limit | No | Max messages to return in the 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 readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable behavioral context: messages are returned oldest first, and when the conversation exceeds the limit, only the most recent messages are returned, with deeper history accessible via sms_list. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each carrying essential information: purpose, ID discovery, and pagination behavior. It is front-loaded with the primary action and avoids any fluff, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema defining the return format, annotations covering safety, and the description explaining ordering, pagination, and ID retrieval, nothing essential is missing. The tool is simple (2 parameters, no nested objects) and the description fully equips an agent to use 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 coverage is 100%, with both parameters described in the schema. The description adds extra semantic value by explaining the behavior of the limit parameter (returns most recent messages when exceeded), which is not in the schema. This enhances understanding of how the limit affects results, though it is a modest addition.
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 'Get' and the resource 'one SMS/MMS conversation with its message history, oldest first.' It distinguishes itself from sms_thread_list (which lists threads) and sms_list (which pages messages) by explicitly mentioning pagination and ordering. This makes the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on how to obtain the required thread ID via sms_thread_list or from any SMS, and explains when to use sms_list for deeper history when the conversation exceeds the limit. This gives clear context for when to use this tool versus its siblings, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sms_thread_listList SMS ThreadsARead-onlyIdempotentInspect
List SMS/MMS conversations, most recently active first. A conversation is one agent number talking to one external contact. Returns summaries (participant, last message snippet, message count) — use sms_thread_get for the full history. Optionally filter by agentId.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max thread summaries to return. Defaults to 20. | |
| offset | No | Pagination offset (skip this many threads from the start). | |
| agentId | No | Filter conversations by agent ID. Omit to see threads across all agents you have access to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: result ordering, conversation grouping logic, and the exact summary fields returned. It doesn't discuss pagination behavior, but that is a minor gap for a read-only list 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?
Two dense sentences with no wasted words. The purpose and sort order are front-loaded, the conversation definition is concise, and the alternative tool is named explicitly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations, fully documented parameters, output schema presence, and clear sibling differentiation, nothing essential is missing. The description covers what the tool returns, how threads are defined, and when to use the complementary 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 all three parameters are already documented. The description adds marginal value by restating the agentId filter and clarifying that omitting it shows all accessible agents, but it does not provide additional semantics 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 states a specific verb and resource ('List SMS/MMS conversations'), defines the unit of conversation, and specifies sorting ('most recently active first'). It also clearly differentiates itself from sms_thread_get by noting it returns summaries rather than full history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs the agent to sms_thread_get for full history, establishing when this summary-level tool is appropriate. It also explains the optional agentId filter and its scope, giving clear context for when to use it versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usage_overviewUsage OverviewARead-onlyInspect
Usage rollup for a billing period. Returns counters keyed by usage type (e.g. 'email_sent', 'sms_sent', 'voice_call_minutes') plus the latest update timestamp. Defaults to the current calendar month in UTC when period is omitted. Read-only, callable by any authenticated credential — scoped to the caller's org. Use to answer 'where am I against my tier limits?' without paying for per-event detail (UsageEvent is operator-tier).
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Billing period in YYYY-MM format (e.g. '2026-05'). Defaults to the current calendar month in UTC. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds meaningful context: it is callable by any authenticated credential, scoped to the caller's org, and defaults to the current calendar month in UTC when period is omitted. It doesn't discuss rate limits or pagination, but for a read-only rollup with an output schema, this is close to complete.
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?
Four tight sentences, front-loaded with what the tool returns, then default behavior, then access model, then the routing hint. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is not required, yet the description still names the counter keys an agent will see. Combined with the access and default-period context, nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents the YYYY-MM format and UTC default. The description restates the default but adds no syntax or behavior beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Usage rollup for a billing period') and enumerates what is returned ('counters keyed by usage type... plus the latest update timestamp'). An agent can immediately distinguish this aggregate rollup from per-event detail 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?
Explicitly names the use case ('answer where am I against my tier limits?') and the alternative it displaces ('without paying for per-event detail (UsageEvent is operator-tier)'). Nothing is left to inference about when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_createCreate Vault CredentialAInspect
Create a new credential in an agent vault. Pass type plus the matching payload block (login / card / identity / oauthToken / apiKey / certificate / notes). For login credentials, prefer generatePassword over supplying login.password — the vault generates and stores the password server-side and returns only the credential reference, so the secret never enters the conversation. For api_key/oauth_token credentials, set allowedHosts so the credential can be exercised through vault_credential_use.
| Name | Required | Description | Default |
|---|---|---|---|
| card | No | Card payload for card-type. | |
| name | Yes | Human-readable credential name. | |
| type | Yes | Credential type. | |
| login | No | Login payload for login-type. | |
| notes | No | Optional secure note text. | |
| apiKey | No | API key payload for api_key-type. | |
| fields | No | Optional custom fields. | |
| agentId | No | Agent ID that owns the new credential. Optional when using an agent-bound credential. | |
| favorite | No | Optional favorite flag. | |
| identity | No | Identity payload for identity-type. | |
| oauthToken | No | OAuth token payload for oauth_token-type. | |
| certificate | No | Certificate payload for certificate-type. | |
| revealPolicy | No | Reveal policy. 'brokered' means the plaintext is never returned by any read/reveal/export path — not even to the org master key; the secret is only usable via vault_credential_use (recovery = rotation). 'standard' keeps master-key reveal available outside MCP. | |
| generatePassword | No | Generate the login password server-side instead of supplying login.password. Preferred for login credentials: the password is created and stored inside the vault and never enters the conversation. Only valid for login-type; mutually exclusive with login.password. Pass {} for defaults. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal that this is a mutating, non-idempotent operation; the description adds value by disclosing a key behavioral nuance: using `generatePassword` keeps the secret out of the conversation and returns only the credential reference. It also hints at post-creation constraints by telling users to set `allowedHosts` for broker-usable credentials, complementing the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first states the core operation, the second gives the most security-relevant creation pattern, and the third covers the broker-access prerequisite. Each sentence earns its place and the most important guidance 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?
Given the tool's complexity — 14 parameters, nested payload objects, multiple credential types, and an output schema — the description covers the essential decision paths: choosing the type, providing the matching payload, generating passwords securely, and setting allowedHosts for brokerable credentials. It does not enumerate every payload field, but the schema and output schema carry that burden; the description is complete enough 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 100%, so the baseline is 3. The description adds meaningful cross-cutting semantics beyond the schema: it explains the relationship between `type` and the payload blocks, recommends `generatePassword` over `login.password`, and ties `allowedHosts` to downstream exercise via vault_credential_use. This provides selection guidance that the flat property descriptions do not convey.
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 and resource: "Create a new credential in an agent vault." It clearly distinguishes this creation tool from its update, get, list, search, and use siblings, and the rest of the description reinforces scope by naming the credential types and payload blocks involved.
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 actionable usage guidance: pass `type` plus the matching payload block, prefer `generatePassword` for login credentials, and set `allowedHosts` for api_key/oauth_token credentials so they can be exercised via vault_credential_use. It does not explicitly state when not to use this tool versus an alternative, but the creation context and cross-reference to vault_credential_use provide clear directional context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_deleteDelete Vault CredentialADestructiveIdempotentInspect
Delete a credential from vault storage by ID. Use to remove obsolete or compromised secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Credential ID. | |
| agentId | No | Agent ID that owns the credential. Optional when using an agent-bound credential. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| deleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is clear. The description adds the rationale (removing obsolete or compromised secrets) but does not disclose additional behavioral details such as irreversibility, cascading effects on dependent resources, or permission requirements. With annotations covering the core safety profile, the description contributes modestly but does not contradict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, resource, and key parameter (ID) immediately, followed by a brief usage note. There is no unnecessary verbiage or repetition of schema details. It is optimally 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?
The tool has an output schema, so return values do not need to be described. With two parameters (one required) and clear annotations (destructive, idempotent), the description covers the purpose and usage adequately. It does not mention prerequisites or post-conditions, but for a simple delete operation with full schema and annotations, this is nearly complete. The only minor gap is not explicitly stating permanence, though destructiveHint implies it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'id' and 'agentId' have descriptions in the schema. The tool description does not add any parameter-specific meaning beyond what the schema already provides. Baseline of 3 is appropriate since the schema fully documents 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 states the exact operation: delete a credential from vault storage by ID. It clearly distinguishes from sibling tools like vault_credential_create, vault_credential_update, and vault_credential_get by specifying the deletion action and the target resource. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Use to remove obsolete or compromised secrets.' This gives the agent context on when to invoke it. However, it does not explicitly state when not to use it or mention alternatives (e.g., vault_credential_update for changing a credential), but the purpose is specific enough that this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_getGet Vault CredentialARead-onlyIdempotentInspect
Get a single vault credential by ID. Sensitive fields (passwords, tokens, SSNs, CVV) are masked. To use the plaintext for autofill or as an upstream credential, mint a vault token at the credential broker — the LLM never sees the secret directly.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Credential ID. | |
| agentId | No | Agent ID that owns the credential. Optional when using an agent-bound credential. |
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, covering safety and idempotency. The description adds valuable behavioral context beyond annotations by disclosing that sensitive fields are masked and that the LLM never sees the secret directly, which is critical for the agent's decision-making. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the core purpose in the first sentence and critical behavioral guidance in the second. It is front-loaded and contains no filler. Every sentence earns its place, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple get-by-ID operation. With an output schema present, the return format is documented. Annotations cover safety and idempotency. The description adds the crucial masking behavior and the alternative for plaintext, which fully equips an agent to decide when to call this tool and what to expect. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full 100% coverage with descriptions for both 'id' and 'agentId'. The description does not add additional meaning beyond the schema—it merely restates that the tool fetches by ID. Given the high schema coverage, the baseline of 3 is appropriate, and the description does not compensate for any gaps because none 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 clearly states a specific verb ('Get'), a specific resource ('vault credential'), and the retrieval method ('by ID'). It differentiates from siblings like vault_credential_list and vault_credential_search by focusing on a single credential lookup. The purpose is immediately unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context on when to use this tool versus needing plaintext access: it states that sensitive fields are masked and instructs to mint a vault token at the credential broker for plaintext needs. While it doesn't name a specific sibling tool, it clearly distinguishes the use case and directs the agent to an alternative workflow when plaintext is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_get_totpGet Vault TOTPARead-onlyInspect
Get the current TOTP code for a credential that has a TOTP secret configured. Returns the live 6-digit code derived from the stored secret — the secret itself is never disclosed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Credential ID. | |
| agentId | No | Agent ID that owns the credential. Optional when using an agent-bound credential. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral details: it returns a live 6-digit code and explicitly states that the underlying secret is never disclosed. This aligns with the readOnlyHint annotation and adds meaningful transparency about what the agent can and cannot expect from the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. Two sentences provide the purpose, the return value, and a key safety property without any redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter interface and the presence of clear annotations and sibling context, the description is complete enough for an agent to call the tool correctly. It clearly states what is returned and what is not disclosed, so no important context 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 schema has full coverage of both parameters. The id description is minimal but adequate ('Credential ID.'), and the agentId description adds useful context about when it is optional ('Agent ID that owns the credential. Optional when using an agent-bound credential.'). This goes slightly beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to get the current TOTP code for a credential with a TOTP secret configured. It distinguishes itself from related credential tools like vault_credential_get and vault_credential_use by focusing specifically on returning the live 6-digit code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by indicating it applies only to credentials with a TOTP secret configured. It does not explicitly contrast it with sibling tools like vault_credential_get or vault_credential_use, but the conditional phrasing provides adequate guidance for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_listList Vault CredentialsARead-onlyIdempotentInspect
List credentials in an agent vault with optional type filter. Use to browse stored secrets before reading, updating, or deleting entries. Sensitive fields are masked.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional credential type filter. | |
| agentId | No | Agent ID whose vault to list. Optional when using an agent-bound credential (ak_* or oat_* with agentId). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds a meaningful behavioral detail—'Sensitive fields are masked'—which is not present in the annotations, increasing transparency about the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, efficiently conveying purpose, usage timing, and a key output behavior without any redundancy. The main function is front-loaded, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward listing operation with two optional parameters, the description covers the essential aspects: what it does, when to use it, and the masking behavior. It does not mention pagination or output format, but these are not critical gaps given the tool's simplicity and the presence of sibling list operations that likely share conventions.
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?
Both parameters are fully described in the schema with clear explanations, including the enum values for 'type' and the conditional nature of 'agentId'. The description's mention of an 'optional type filter' aligns with the schema, and no additional parameter detail is necessary.
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 primary action (List credentials) and the target resource (agent vault), with an optional type filter. It also positions the tool as a browsing step before reading, updating, or deleting, which clarifies its role among credential-related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool to browse stored secrets before performing other actions, giving a clear usage scenario. It does not explicitly contrast with vault_credential_search, but the 'browse' framing and optional filter provide sufficient orientation for typical list-versus-search decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_request_cancelCancel Credential RequestADestructiveIdempotentInspect
Cancel a pending credential request by ID. Invalidates the single-use fill link so the human can no longer submit a value. Use when the request is no longer needed or was created in error.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | Credential-request ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses the concrete behavioral consequence—invalidating the fill link so the human can no longer submit a value—which goes beyond the destructiveHint annotation. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff; the purpose, effect, and usage condition are all communicated efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter destructive/idempotent operation, the description fully conveys what the tool does and when to use it. Return values are not required since an output schema exists.
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 single parameter is fully covered by the schema ('Credential-request ID'), and the description only restates that the action is by ID. Since schema coverage is high, the description adds little additional parameter meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('cancel'), a specific resource ('credential request'), and the key effect ('invalidates the single-use fill link'), clearly distinguishing it from sibling tools like create, fill, and status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool: 'when the request is no longer needed or was created in error.' This gives clear usage context and no alternative is needed given the cancellation purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_request_createRequest Credential From HumanAInspect
Request a credential from a HUMAN without the agent or LLM ever seeing the secret. When the connecting MCP client supports inline elicitation, the human is shown a form to type the secret directly — the tool returns status: FULFILLED with the credentialId in one call, no link needed. Otherwise it returns a single-use fill link (fillUrl, emailed to the org owner); poll vault_credential_request_status until status is FULFILLED, then use the returned credentialId as a normal vault credential. Use this when a flow needs a secret the agent doesn't hold and can't safely be given (passwords, API keys, card numbers).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name for the requested credential. | |
| type | Yes | Credential type the human will be asked to fill: login, secure_note, or card. | |
| reason | Yes | Plain-language reason shown to the human explaining why the credential is needed. | |
| agentId | No | Agent ID whose vault the requested credential lands in. Optional when using an agent-bound credential. | |
| ttlSeconds | No | Optional fill-link lifetime in seconds before the request expires. | |
| notifyOwner | No | Whether to email the single-use fill link to the org owner. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is fully transparent about side effects and non-read-only behavior. It states that a request is created, that a fill link may be emailed to the org owner, and that a credentialId is returned upon fulfillment. It also guarantees the secret is never seen by the agent or LLM. These details go beyond the annotations and do not contradict them (readOnly=false, idempotent=false, destructive=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?
The description is moderately dense but well-organized: it opens with the core purpose, then explains the conditional behavior and the required follow-up action, and closes with a clear use case. It avoids fluff and every sentence contributes necessary detail. It is slightly long due to the conditional workflow, but this is justified by the tool's complexity.
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 description covers the main workflow and the key decision point (inline elicitation vs. fill link). It gives enough detail for an agent to understand the flow and when to poll. However, it does not mention cancellation (a sibling tool exists) or what happens when ttlSeconds expires, and it does not clarify how the agent distinguishes between the two modes in the response. These are minor gaps given the presence of sibling tools and an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all six parameters, achieving 100% coverage. The tool description adds some context for ttlSeconds and notifyOwner by mentioning the fill link and emailing the org owner, but largely mirrors the schema. Since the schema is comprehensive, the description does not significantly add meaning beyond what is already structured, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: request a credential from a human without the agent/LLM seeing the secret. It distinguishes itself from related siblings like vault_credential_create by emphasizing that the secret is never exposed to the agent, and it specifies the credential types involved. The verb 'request' and resource 'credential from a human' make the action specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when a flow needs a secret the agent doesn't hold and can't safely be given,' giving a clear usage condition. It also explains the two possible workflows (inline elicitation vs. fill link with polling) and directs the agent to poll vault_credential_request_status when a fill link is returned. However, it does not explicitly mention when not to use it or name alternatives like vault_credential_create, so it lacks a small piece of explicit contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_request_fillSubmit Credential (widget)AInspect
Internal: submit a credential-request secret from the Anima UI widget. Not for direct agent use.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | The secret field values the human entered in the widget. | |
| fillToken | Yes | Single-use fill token from the ui-tier render-data. |
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 indicate that this is not read-only and not idempotent, which covers the mutation aspect. The description adds valuable context that it is an internal UI-widget submission and explicitly warns agents, which is transparent about its intended environment and restrictions. It does not detail side effects, but the annotations and the term 'submit' sufficiently imply the action's 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 a single, concise sentence that front-loads the critical usage restriction ('Internal' and 'Not for direct agent use') before stating the action. There is no unnecessary wording, making it highly 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?
The description provides essential context about the tool's internal nature and its restriction from agent use, which is critical for safe invocation. Together with the fully described schema parameters and annotations, this gives agents enough information to understand the tool's role. It does not elaborate on the broader workflow (e.g., that it completes a prior request), but this is implied by the tool name and parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions for both parameters (values and fillToken) are clear and self-explanatory, covering the required meaning and source of each. Since schema coverage is 100%, the description does not need to add further parameter detail; 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 clearly states the tool's specific action: submitting a credential-request secret from the Anima UI widget. It distinguishes this from other vault tools by indicating it is internal and not for direct agent use, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Not for direct agent use,' which provides a clear boundary for when not to use it. It also notes that it is used 'from the Anima UI widget,' guiding agents to avoid invoking it directly and to use alternative tools like vault_credential_request_create or status instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_request_statusGet Credential Request StatusARead-onlyIdempotentInspect
Get the status of a pending credential request by ID. Poll this after vault_credential_request_create until status is FULFILLED, then use credentialId as a normal vault credential. maskedPreview shows a redacted hint of the filled value once available — the plaintext is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | Credential-request ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds useful transparency by noting that maskedPreview is redacted and plaintext is never returned, which sets accurate expectations about response content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the primary action, and every sentence adds meaningful guidance. There is no redundant or filler 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?
The description includes key workflow context, result handling instructions, and security behavior. It is fully sufficient for an agent to understand the tool's role and expected output without needing additional 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?
The only parameter, requestId, is described as 'Credential-request ID.' The description contextually links it to the create operation, making its origin clear. Schema coverage is complete, and no additional explanation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: get the status of a pending credential request by ID. It also differentiates from sibling tools by explaining its role in the polling workflow after creation and before using the credential.
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 guidance is provided: poll this tool after vault_credential_request_create until status is FULFILLED, then use the returned credentialId as a normal vault credential. This removes ambiguity about when and how to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_searchSearch VaultARead-onlyIdempotentInspect
Search vault credentials by keyword across names and content. Use when you know part of the name, URL, or username but not the exact credential ID. Different access pattern from vault_credential_list — list is paginated browsing, search is text-query lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional credential type filter. | |
| search | Yes | Search text matched against names and content. | |
| agentId | No | Agent ID whose vault to search. Optional when using an agent-bound credential. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already supply readOnlyHint, idempotentHint, and destructiveHint, which cover safety and side effects. The description adds that it's a text-query lookup, which is consistent and provides additional clarity about the operation without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with no fluff. It front-loads the core action ('Search vault credentials by keyword') and then provides necessary context and differentiation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema is present (likely a list of credentials), the description does not need to explain return values. It fully covers the tool's purpose and usage context, making it complete for an agent to decide to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes all three parameters (search, type, agentId) with their types and descriptions. The description does not add new semantic meaning beyond what's in the schema, but it reinforces the search behavior. Since schema coverage is 100%, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (search), the resource (vault credentials), and the scope (across names and content). It explicitly differentiates from vault_credential_list by describing the access pattern, making it easy for an agent to distinguish it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'Use when you know part of the name, URL, or username but not the exact credential ID.' It also contrasts with list ('list is paginated browsing, search is text-query lookup'), giving clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_updateUpdate Vault CredentialAIdempotentInspect
Update an existing vault credential by ID, including optional structured sections and metadata flags. Use to rotate passwords or revise stored details.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Credential ID to update. | |
| card | No | Optional updated card payload. | |
| name | No | Optional updated name. | |
| login | No | Optional updated login payload. | |
| notes | No | Optional updated note text. | |
| apiKey | No | Optional updated API key payload. Changing allowedHosts requires a master key. | |
| fields | No | Optional updated custom fields. | |
| agentId | No | Agent ID that owns the credential. Optional when using an agent-bound credential. | |
| favorite | No | Optional updated favorite flag. | |
| identity | No | Optional updated identity payload. | |
| oauthToken | No | Optional updated OAuth token payload. | |
| certificate | No | Optional updated certificate payload. | |
| revealPolicy | No | Optional reveal-policy change. Upgrading standard → brokered needs UPDATE access; downgrading brokered → standard is master-key-only. |
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=false, and idempotentHint=true, so the mutation and safety profile is covered. The description adds little beyond that—it hints at optional fields but doesn't disclose partial-update semantics, permission requirements, or other side effects. This is adequate but not enriched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the action and target are front-loaded, followed by a practical use case. Every sentence earns its place and nothing is redundant.
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 the schema is large and nested, all parameters are documented in the schema, annotations cover the operation's safety profile, and an output schema exists. The description plus structured metadata gives an agent everything needed to select and invoke the tool 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%, and every parameter has a schema-level description. The tool description only provides a high-level 'optional structured sections and metadata flags' summary, which is useful context but not required to compensate for schema gaps. 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 states a specific action ('Update'), the resource ('existing vault credential'), the lookup key ('by ID'), and the scope ('optional structured sections and metadata flags'). This clearly distinguishes it from create/get/delete/use siblings since it targets an existing credential for modification.
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?
'Use to rotate passwords or revise stored details' provides clear, concrete situations where the update tool applies. It doesn't explicitly name alternatives or when-not-to-use conditions, but the context is sufficient for an agent to pick this over vault_credential_create or vault_credential_use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_credential_useUse Vault CredentialAInspect
Make an outbound HTTPS call with a stored credential attached SERVER-SIDE, and get the upstream response. Use this to act with a secret (call an API, hit an authed endpoint) WITHOUT ever seeing the plaintext — the platform injects the credential on the wire. The target host must be on the credential's allowlist. Works even for brokered credentials that can never be revealed. Prefer this over trying to read a secret: you can use it, you cannot see it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Credential ID to broker the call with. | |
| url | Yes | Absolute https:// URL to call. Its host MUST be on the credential's allowlist (allowedHosts / login URIs). | |
| body | No | Raw request body (encode JSON yourself). | |
| method | Yes | HTTP method for the outbound call. | |
| agentId | No | Agent ID that owns the credential. Optional when using an agent-bound credential. | |
| headers | No | Extra request headers. Any Authorization / auth header you set is IGNORED and replaced by the real credential. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses that the credential is injected server-side and that any Authorization/auth header the caller sets will be ignored and replaced. It also explains that brokered credentials work even though they can never be revealed, which is important non-obvious 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 well-structured and front-loaded with the core action, but some later sentences restate the same idea (e.g., 'use it, you cannot see it' echoes the earlier 'without ever seeing plaintext'). Still, the extra guidance about allowlists and brokered credentials is valuable.
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 description provides enough context to choose and call the tool correctly, including constraints and side effects. It does not detail the response format, but an output schema is indicated and the description says the tool returns the upstream response, which is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are described in the schema with meaningful detail: id identifies the credential, url must be HTTPS and on the allowlist, method has an enum, body is raw and self-encoded, headers are extra and auth headers are ignored, and agentId is optional for agent-bound credentials.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool makes an outbound HTTPS call with a server-side attached credential and returns the upstream response. This strongly distinguishes it from read-only vault tools like vault_credential_get or vault_credential_get_totp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use it: to act with a secret by calling an API or authed endpoint without seeing the plaintext. It also gives crucial constraints (target host must be on the credential allowlist) and explicitly prefers this over trying to read a secret.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_exchange_token_for_injectionExchange Vault Token (injection)AInspect
Exchange a vtk_ vault token for the PLAINTEXT credential, to inject into a trusted client process (a CLI, the browser extension) — NOT to read it yourself. The API gates this to injector credentials: it only succeeds for a master key or a key carrying the vault:inject scope; a plain agent key gets 403. If you are an agent that needs to USE a secret, do NOT use this — use vault_credential_use (the server-side broker), which never reveals the secret.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The vtk_ vault token to exchange. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behavior beyond the minimal annotations: the tool returns plaintext credentials, is gated to injector credentials (master key or vault:inject scope), and explicitly states that agents should not use it to read secrets themselves. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with three sentences each serving a distinct purpose: stating the action, highlighting the access control, and directing agents to the alternative. No redundant or filler 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?
Provides complete context for the tool's use case, including its purpose, restrictions, and the alternative tool to use. It does not need to describe the output format because the output schema is available separately, and the description covers all essential decision points 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 only parameter, 'token', is fully described in the schema with the same wording as in the description ('The vtk_ vault token to exchange'). Since schema coverage is 100%, the description adds no additional meaning beyond what is already provided, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and object ('Exchange a vtk_ vault token for the PLAINTEXT credential') and explicitly distinguishes from sibling tools by warning against reading secrets directly and pointing to vault_credential_use as the alternative for using secrets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use and when-not-to-use guidance: it is for injecting into trusted client processes, not for agents that need to use secrets. Also clarifies that a plain agent key will get 403, making the access control explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_provisionProvision VaultAIdempotentInspect
Provision a credential vault for an agent. Required before vault_credential_create can be called against a freshly-created agent — without a vault, credentials have nowhere to live. Idempotent: returns the existing vault if one already exists. Master-key only.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | Agent ID to provision a vault for. Master-key only. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool is idempotent and 'returns the existing vault if one already exists,' which adds concrete behavioral detail beyond the idempotentHint annotation. It also notes the 'Master-key only' access restriction, providing transparency about side conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, delivering all key information in two sentences without unnecessary verbosity. It is easy to parse and focused.
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 description provides sufficient context for an agent to decide when and how to use the tool: it explains the requirement, idempotency, and authorization. No additional details are needed for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter agentId has a clear description in the schema: 'Agent ID to provision a vault for. Master-key only.' This fully explains the parameter's meaning and any constraints, leaving no ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Provision a credential vault for an agent.' It also specifies the resource (agent) and action (provision vault), and distinguishes it from related tools like vault_credential_create by noting it is a prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly indicates when to use the tool: 'Required before vault_credential_create can be called against a freshly-created agent.' It also provides behavioral guidance (idempotent) and authorization context ('Master-key only'), giving clear instructions on usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
voice_listList AI VoicesARead-onlyIdempotentInspect
List available AI voices for placing phone calls. The catalog is multilingual — filter by language or gender. Each voice includes descriptive metadata and a vendor-neutral audio preview URL (sampleUrl), plus the voice ID needed for phone_call_create.
| Name | Required | Description | Default |
|---|---|---|---|
| gender | No | Filter by voice gender. | |
| language | No | Filter by BASE language code — the bare two-letter code, e.g. 'en' or 'fr'. Matching is a prefix test against the catalog's own base codes, so a region tag like 'en-US' matches nothing. Call without a filter to see which languages the catalog currently carries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds valuable behavior: the language filter performs a prefix match against base codes, so region tags like 'en-US' match nothing. This is beyond annotation coverage and helps the agent avoid failed queries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero fluff. The first sentence states the purpose and scope; the second adds filtering options and output highlights. Information is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two optional parameters, full schema coverage, and annotations covering safety, the description is sufficient. It mentions output metadata, sampleUrl, and voice ID relevance to phone_call_create. No critical missing context for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with rich descriptions, especially for language. The tool description only says 'filter by language or gender', which adds no meaning beyond the schema. The language parameter's prefix-matching detail is already in the schema, so the description itself does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists AI voices for placing phone calls, specifying the verb (list), resource (voices), and purpose. It distinguishes from sibling tools like phone_call_list and phone_number_list by focusing on voice catalog rather than call records or numbers.
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 indicates the voice ID is needed for phone_call_create, implying the intended workflow. However, it does not explicitly state when not to use this tool or mention alternative tools for other contexts. It gives clear context but no formal exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_deleteDelete WebhookADestructiveInspect
Delete a webhook subscription by ID. Permanently removes the configuration and stops future deliveries. To temporarily pause without deleting, use webhook_set with { id, active: false }.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| deleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds genuine value beyond annotations by specifying the consequence: permanent removal of configuration and cessation of future deliveries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the primary action first, then the destructive consequence, then the non-destructive alternative. No filler, and the most important information 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?
An output schema exists, so return values need not be explained. For a one-parameter destructive tool, the description covers action, effect, and routing to the alternative — nothing an agent needs 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% with a single documented 'id' parameter, so the schema carries the semantics. The description's 'by ID' adds nothing beyond it, matching the baseline 3 for well-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a webhook subscription by ID'), which is unambiguous and easily distinguished from sibling tools like webhook_get, webhook_set, and webhook_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative path for a related but non-destructive need: 'To temporarily pause without deleting, use webhook_set with { id, active: false }.' That is a concrete when-not-to-use-this rule with the substitute tool and parameters spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_getGet WebhookARead-onlyInspect
Get a webhook subscription by ID. Returns the full configuration (URL, subscribed events, active state, description).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook ID |
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, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds the shape of the payload (URL, events, active state, description), which is modest extra context but not the kind of behavioral detail (error behavior for unknown IDs, permissions) that would raise this higher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, the action front-loaded before the return detail, with no filler. The parenthetical enumeration of returned fields is slightly redundant given an output schema exists, costing it a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with read-only annotations and an output schema, the description supplies what an agent needs to invoke it correctly. The only real omission is routing guidance against webhook_list for discovery, which is a minor gap at this complexity level.
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 single 'id' parameter is documented as 'Webhook ID', so the schema carries the full parameter burden. The description adds only that the ID selects a single subscription, which is baseline-level value; 3 is the correct baseline 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?
States a specific verb (Get) and resource (webhook subscription) with the access key (by ID), so the agent knows exactly what it retrieves. It does not explicitly distinguish itself from sibling webhook_list (list vs single-by-ID) or webhook_set, but the 'by ID' qualifier makes the distinction inferable.
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?
Usage is implied by the 'by ID' framing – use this when you already know a webhook's identifier – but the description never names webhook_list as the discovery alternative or states when not to use it. No prerequisites or guidance about where IDs come from are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_listList WebhooksARead-onlyInspect
List webhook subscriptions for the calling org with cursor pagination. Use to enumerate existing webhooks before set/delete operations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of webhooks to return (1-100) | |
| cursor | No | Pagination cursor from a previous list call |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| total | No | |
| cursor | No | |
| has_more | No | |
| next_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds that results are cursor-paginated and org-scoped, which is useful behavioral context beyond the annotations, though it says nothing about ordering or default page size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the resource and scope front-loaded and the usage hint second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and both parameters are fully documented in the schema. The description supplies scope, pagination model, and a usage cue, leaving only minor gaps like ordering or default limit.
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% (both limit and cursor are documented in the schema), so the schema carries the parameter burden. The description's mention of cursor pagination adds marginal context but no syntax beyond what the schema already provides; 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?
States a specific verb and resource (list webhook subscriptions) with the scope ('for the calling org') and the pagination model. It implicitly distinguishes itself from webhook_get (single) and webhook_set, but never names those siblings explicitly.
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?
'Use to enumerate existing webhooks before set/delete operations' gives a concrete usage context. It stops short of stating when not to use it or naming webhook_get as the alternative for fetching one webhook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_setSet WebhookAInspect
Create or update a webhook subscription (upsert). If id is provided the call updates that webhook (PUT). If omitted it creates a new one (POST) — url and events are then required. Use this for declarative 'ensure webhook X exists' workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Webhook ID. Present → updates that webhook (PUT). Omitted → creates a new one (POST). | |
| url | No | HTTPS endpoint URL that will receive event payloads. Required on create; optional on update. | |
| active | No | Whether the webhook is active. Defaults to true on create. | |
| events | No | List of event types to subscribe to (e.g. 'message.received', 'email.bounced'). Required on create; optional on update. | |
| authConfig | No | Auth the platform presents to your endpoint IN ADDITION to the always-on X-Anima-Signature HMAC — a bearer token, HTTP basic, or a custom header. Pass { type: 'none' } to remove it. | |
| description | No | Optional human-readable label | |
| maxAttempts | No | Max delivery attempts before dead-lettering (default 3) | |
| rateLimitPerMinute | No | Max deliveries per minute to this endpoint; omit for unlimited |
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 write (readOnlyHint=false), non-destructive, and closed-world operation. The description adds meaningful behavior beyond that: the upsert semantics, the PUT/POST selection rule, and the create-time required fields. It omits auth requirements and side effects of updates, but adds real value over the 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?
Three tight sentences, front-loaded with the upsert framing. Every clause earns its place and none is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter write tool with 100% schema coverage and an output schema, the description covers the essential mode-selection semantics and the declarative use case. It could mention auth/signature expectations, but those live in the schema, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, url, events, and the rest. The description restates the id→PUT/omitted→POST rule and the create-time required fields, but adds no syntax or format detail beyond what the schema provides. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create or update a webhook subscription') and immediately clarifies the upsert branch logic: id present = PUT update, id omitted = POST create. An agent can tell exactly what the tool does and how the mode is selected without opening the schema.
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 frames the tool for declarative 'ensure webhook X exists' workflows, which tells the agent when this is the right choice versus a plain create. It doesn't name the alternatives (e.g., webhook_delete for removal, webhook_test for verification), so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_testTest WebhookAInspect
Send a test event payload to a webhook to verify the endpoint is reachable and signature verification works. Returns a deliveryId you can correlate with your endpoint's logs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook ID to send a test delivery to | |
| event | No | Event type to simulate in the test payload (e.g. 'message.received'). Defaults to 'message.received'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare openWorldHint=true and destructiveHint=false, so the agent already knows an external side effect occurs without mutation of stored state. The description adds meaningful context beyond that: the test emits a simulated event payload and returns a deliveryId intended for correlation with endpoint logs. It omits whether the call counts against delivery quotas or is rate-limited, which keeps it short of 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?
Two tight sentences, front-loaded with the action and its purpose; the return-value note is compressed into one clause. Nothing is padded or repeated.
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, yet the description still hints at the deliveryId correlation use case. For a two-parameter tool with full schema coverage and annotations covering the safety profile, an agent has everything needed 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?
Schema description coverage is 100%, so both parameters (id, event) are already fully documented, and the description adds no syntax, format, or default details beyond them. Baseline 3 is appropriate when the schema carries the parameter 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?
Specific verb+resource+outcome: it sends a test event payload to a webhook and states exactly what the test verifies (endpoint reachability and signature verification). This is clearly distinguishable from webhook_set/get/list/delete siblings, which configure or read webhooks rather than probing a live endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use – verifying an endpoint is reachable and its signature verification works – which is exactly the situation that selects this tool. It names no explicit exclusions or alternatives, but the sibling set offers no real substitute, so the gap is minor.
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.
1 tool update
- Changed
email_send1 field changed- changed
Input schema / properties / references / descriptionPrevious value: -"Optional list of message IDs to include in the References header."New value: +"Optional References chain, oldest first: RFC 5322 Message-IDs (an email's `externalId`), not Anima message ids. Omit it on a reply: the chain is derived from `inReplyTo`."
67 tool updates
- First observed
account_overview - First observed
agent_create - First observed
agent_delete - First observed
agent_get - First observed
agent_list - First observed
agent_update - First observed
domain_create - First observed
domain_delete - First observed
domain_get - First observed
domain_list - First observed
domain_update - First observed
domain_verify - First observed
domain_zone_file - First observed
email_attachment_get - First observed
email_draft_create - First observed
email_draft_delete - First observed
email_draft_get - First observed
email_draft_list - First observed
email_draft_send - First observed
email_forward - First observed
email_get - First observed
email_label - First observed
email_list - First observed
email_reply - First observed
email_search - First observed
email_send - First observed
email_thread_get - First observed
extension_connect - First observed
inbox_create - First observed
inbox_delete - First observed
inbox_get - First observed
inbox_list - First observed
inbox_update - First observed
phone_call_create - First observed
phone_call_get - First observed
phone_call_list - First observed
phone_call_recording_get - First observed
phone_call_transcript_get - First observed
phone_number_list - First observed
phone_number_provision - First observed
phone_number_release - First observed
sms_get - First observed
sms_list - First observed
sms_send - First observed
sms_thread_get - First observed
sms_thread_list - First observed
usage_overview - First observed
vault_credential_create - First observed
vault_credential_delete - First observed
vault_credential_get - First observed
vault_credential_get_totp - First observed
vault_credential_list - First observed
vault_credential_request_cancel - First observed
vault_credential_request_create - First observed
vault_credential_request_fill - First observed
vault_credential_request_status - First observed
vault_credential_search - First observed
vault_credential_update - First observed
vault_credential_use - First observed
vault_exchange_token_for_injection - First observed
vault_provision - First observed
voice_list - First observed
webhook_delete - First observed
webhook_get - First observed
webhook_list - First observed
webhook_set - First observed
webhook_test
Related MCP Connectors
Give your AI agent an identity: its own email, webhook, repo, secrets vault, memory and skills.
Give your AI hands. Identity, credential vault, and API gateway for autonomous agents.
- PO6 MailboxOAuthcom.po6
Give AI agents secure access to your email via private aliases with dedicated mailbox storage.
Give an AI agent its own inbox — receive email as a webhook, send over a verified domain.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides identity infrastructure for AI agents to manage email communications, including sending, replying, and organizing messages. It also includes a secure vault for managing credentials and generating TOTP codes.4 npmMIT
- AGPL 3.0
- AlicenseBqualityDmaintenanceGive AI agents a real phone number and voice. Make calls, send email, manage contacts — 26 tools, 12 resources.431MIT
- AlicenseNot gradedqualityCmaintenanceGives an AI assistant its own real phone number and email address so it can place and answer calls, book reservations by phone, send and receive texts, and read written summaries, structured details, and transcripts of every conversation. Also manages contacts, persona and voice settings, webhooks, and a unified call/message history through a hosted OAuth-secured MCP endpoint requiring no local code.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.