MailFixture
Server Details
Test-inbox API for email and SMS: create inboxes, long-poll messages, extract OTPs and links.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.1/5 across 34 of 34 tools scored. Lowest: 3.4/5.
Each tool has a clearly distinct purpose, with no overlap. Tools like get_otp vs wait_for_otp serve different immediate needs (fetching vs waiting). Follow_link and follow_sms_link are differentiated by media type. All tools are well-separated.
Tool names follow a consistent verb_noun pattern (e.g., create_inbox, wait_for_message, revoke_key). There are no mixed conventions or ambiguous verbs; even 'clear_inbox' and 'webhook_deliveries' fit the pattern.
34 tools is on the higher side, but the domain (email/SMS testing) requires many specialized operations. Each tool earns its place, covering different aspects of flow control (wait vs get), media (email vs SMS), and resource management.
The tool set comprehensively covers receiving, extracting (OTP, links), and managing inboxes, domains, phone numbers, keys, and webhooks. The only notable gap is the lack of sending email/SMS, but that is intentional as a test receiver. Core lifecycle for all managed resources is present.
Available Tools
34 toolsclear_inboxAInspect
Delete all messages in an inbox but keep the address receiving. Use to reset state between test steps that reuse one inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | Inbox id (uuid) returned by create_inbox or list_inboxes. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Clearly explains that messages are deleted while the receiving address is preserved. Does not mention permissions or reversibility, but the main behavioral trait (destructive but not deleting the inbox) is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. First sentence states function, second gives use case. Information is front-loaded and 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 simple tool with one parameter and no output schema, the description covers purpose, use case, and behavioral distinction. Missing explicit return value information, but the low complexity makes it nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of inbox_id. The tool description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete all messages in an inbox') and distinguishes from sibling 'delete_inbox' by noting the inbox address is kept. The verb 'clear' is specific and the resource 'inbox' 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?
Explicitly states when to use: 'reset state between test steps that reuse one inbox'. This provides clear context for testing scenarios. Does not explicitly state when not to use, but the guidance is sufficient for appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_domainAInspect
Register a custom domain for receiving test mail. Returns the DNS records (TXT challenge + MX) to publish; the domain accepts mail only after verify_domain passes.
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | The domain to receive test mail on, e.g. mail.example.com. The response carries the TXT + MX records to publish. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses return of DNS records and the verification dependency. Lacks auth or rate limit details, but is sufficient for a simple 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 sentences with no filler. Purpose is front-loaded. 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?
Single parameter, no output schema, yet description fully explains the tool's action, return, and lifecycle. Adequate for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters. Description adds value by explaining the response (TXT + MX records) and the requirement for verify_domain, exceeding baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Register a custom domain for receiving test mail', with specific verb and resource. It distinguishes from siblings like verify_domain by mentioning the 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?
Explicitly notes that domain accepts mail only after verify_domain passes, guiding when to use that tool. No explicit when-not or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_inboxAInspect
Create a programmatic email inbox and get its address. Call this at the start of a test flow, then drive the app under test with the returned email_address. Use one inbox per test for isolation.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Domain the inbox lives on (fqdn). Omit for the shared utility domain; set to one of the account's verified custom domains otherwise. | |
| local_part | No | Local part of the address (1-64 chars of [a-z0-9._-]). Omit for a random one — the safe default for inbox-per-test isolation. | |
| ttl_seconds | No | Auto-delete after this many seconds (60..=2592000). Omit for no TTL. Prefer a TTL in test suites so abandoned inboxes clean themselves up. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes creation and address retrieval but does not mention mutability, consequences, authorization, or cleanup behavior. Adequate but not exhaustive.
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 concise, well-structured sentences with key information front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with optional parameters and no output schema, the description is complete enough. Includes usage pattern and isolation advice. Minor gap: no mention of TTL or domain defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, so baseline 3. Description adds no parameter-specific guidance beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool creates a programmatic email inbox and returns its address. The verb 'create' and resource 'inbox' are specific, and it distinguishes from siblings like clear_inbox or delete_inbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit advice: call at the start of a test flow, drive app under test with returned address, use one per test for isolation. Does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_keyAInspect
Create a new API key. The raw key is in this response ONLY — it is stored hashed and can never be shown again. Handle it as a secret.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Human-readable label for the key (shown in listings). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the raw key is only available in this response, is stored hashed, and must be handled as a secret. No annotations present, so description carries full burden.
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: first states purpose, second gives crucial behavioral info. No wasted words, 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?
Tool is simple with one parameter and no output schema. Description covers the key behavior and security note. Could mention response format but not necessary given 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 'label' is fully described in the input schema (human-readable). Description adds no further 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 clearly states 'Create a new API key' with a specific verb and resource. It distinguishes from sibling tools like revoke_key and list_keys.
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 critical usage note about key being shown only once and stored hashed, but does not explicitly state when not to use or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_phone_numberAInspect
Provision a dedicated US phone number for receiving SMS (paid plans only; numbers are receive-only — mailfixture never sends). Returns {id, phone_number, status}; status 'pending' flips to 'active' within a minute. Use the number as the recipient in the flow under test, then wait_for_sms_otp.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses constraints: paid plans, receive-only, status transition pending->active within a minute. Also explains return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adds value: purpose+constraints, return/status, usage flow. No redundant 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 no parameters and no output schema, description covers all needed: no input required, behavioral constraints, return value, typical usage with wait_for_sms_otp.
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?
No parameters in schema, baseline 4. Description adds no parameter info but includes global constraints (US number, receive-only) which are behavioral, not 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?
Clearly states it provisions a US phone number for receiving SMS. Specific verb 'provision' and resource 'phone number'. Distinguishes from siblings like create_domain or create_inbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context: paid plans only, receive-only, use as recipient then wait_for_sms_otp. Lacks explicit alternatives but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookAInspect
Create a webhook endpoint (paid plans) receiving signed message.received and domain.verified events. The signing secret is in this response ONLY. Message bodies are never delivered over webhooks.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | HTTPS endpoint to receive signed message.received / domain.verified events. | |
| description | No | Optional description shown in listings. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description discloses critical behavioral traits: the signing secret is only shown in the response, and message bodies are never delivered over webhooks. This is valuable 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, each adding essential information: purpose and behavioral constraint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 2 parameters and no output schema, the description covers the core purpose and key behavioral constraints. Could mention HTTPS requirement explicitly, but it's in the parameter description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The tool description adds context about the events and plans but does not significantly enhance understanding of the parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a webhook endpoint for specific events (message.received and domain.verified) and includes the constraint that it's for paid plans. It distinguishes from sibling tools like test_webhook, delete_webhook, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the tool is for paid plans and specifies the events it handles, implying when to use it. However, it does not explicitly state when not to use it or compare to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_domainAInspect
Delete a custom domain and every inbox and message on it. Irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | Domain id (uuid) from create_domain or list_domains. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the destructive behavior: deletion of domain, all inboxes, and messages, plus irreversibility. This is good but could detail potential impacts like webhook breakage.
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, concise sentence conveys the essential information without waste. Front-loaded with verb and resource.
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 covers scope and irreversibility. Lacks details on error cases or prerequisites, but is complete enough 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 input schema has 100% coverage with a description for domain_id. The tool description adds no 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?
The description clearly states 'Delete a custom domain and every inbox and message on it. Irreversible.' It uses a specific verb and resource, and distinguishes from siblings like create_domain or verify_domain by noting the cascading delete.
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 use for removing a domain entirely, but lacks explicit when-to-use or when-not-to-use guidance. No alternatives or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_inboxAInspect
Delete an inbox and all its messages. Mail to the address is rejected afterwards. Use as test teardown.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | Inbox id (uuid) returned by create_inbox or list_inboxes. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: deletes all messages and rejects future mail. With no annotations, description carries full burden; this is sufficiently 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?
Two sentences, no wasted words. First sentence states action, second provides use case. Efficient and 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?
For a single-parameter delete tool with no output schema, the description covers behavior, side effects, and usage context completely.
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 description repeats the schema's parameter description. No additional meaning added beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the resource 'inbox and all its messages', and distinguishes from sibling tool 'clear_inbox' which likely only clears messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit context 'Use as test teardown', indicating when to use. Could be improved by explicitly contrasting with alternatives like 'clear_inbox'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookAInspect
Delete a webhook endpoint. Pending deliveries to it are dropped.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | Webhook endpoint id (uuid) from create_webhook or list_webhooks. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions that pending deliveries are dropped, but does not disclose irreversibility or other side effects beyond annotations (none provided).
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, front-loaded sentences with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-param tool, the description covers the action and a key side effect, though it could mention if deletion is synchronous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no extra meaning beyond the schema's parameter 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 clearly states the action 'Delete a webhook endpoint' and the resource, distinguishing it from siblings like create_webhook or test_webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like enable_webhook. The description only states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_webhookAInspect
Re-enable a webhook endpoint that was auto-disabled after repeated failed deliveries.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | Webhook endpoint id (uuid) from create_webhook or list_webhooks. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the action (re-enable) and the trigger condition, but lacks details on permissions, side effects, or behavior when the webhook is already enabled or does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and context. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description provides sufficient context to understand when and why to use it. It could mention error handling (e.g., if webhook is already enabled) but is generally 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?
With 100% schema coverage, the schema already describes the webhook_id parameter. The description does not add any additional meaning or context beyond what the schema provides, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (re-enable) and the specific resource (webhook endpoint that was auto-disabled after repeated failed deliveries). It distinguishes from sibling tools like create_webhook, delete_webhook, and test_webhook.
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 implicitly provides usage context by specifying the condition (auto-disabled after repeated failed deliveries). However, it does not explicitly state when not to use or mention alternatives, leaving some ambiguity for edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
follow_linkAInspect
Follow (server-side GET) a link extracted from a message — the 'click the verification link' step without leaving the conversation. Defaults to the first verify-classed link; pass class, index, or an exact url to pick another. Redirects are followed (SSRF-guarded, https-only, max 5). Returns {requested_url, final_url, status, redirects, ok} — the target's response body is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Follow this exact URL (must be one of the message's extracted links). At most one of url, class, index. | |
| class | No | Follow the first link of this class: verify | reset | unsubscribe | other. Default when nothing is passed: verify. | |
| index | No | Follow the link at this zero-based index of the extracted links. | |
| message_id | Yes | Message id (uuid) whose extracted link to follow. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses key behavioral traits: SSRF-guarded, https-only, max 5 redirects, and that the response body is never returned. It also explains default behavior (first verify-classed link). Minor omission: no mention of error handling or timeout 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 efficient paragraph with no redundancy. It is front-loaded with the main purpose, followed by selection options, then safety and return format. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides the return object structure. It covers selection, safety, and behavior. It is slightly incomplete: missing error scenarios (e.g., invalid URL, timeout) or what happens when no link matches the criteria. Otherwise thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning beyond schema: explains the default for 'class' (verify), mutual exclusivity among url/class/index, and details about the return object's fields. This helps the agent understand parameter interaction and expected output.
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 follows a link server-side ('Follow (server-side GET) a link extracted from a message'), specifies the typical use case ('click the verification link'), and distinguishes from siblings like 'get_links' (list only) and 'follow_sms_link' (follow SMS link).
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 context for when to use ('click the verification link' step) and explains how to select alternative links via class, index, or exact URL. It does not explicitly list when not to use or mention alternatives, but the guidance is clear for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
follow_sms_linkAInspect
Follow (server-side GET) a link extracted from an SMS — same semantics as the email follow_link tool: defaults to the first verify-classed link, accepts class/index/exact url, SSRF-guarded, https-only, max 5 redirects. Returns {requested_url, final_url, status, redirects, ok}.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Follow this exact URL (must be one of the SMS's extracted links). At most one of url, class, index. | |
| class | No | Follow the first link of this class: verify | reset | unsubscribe | other. Default when nothing is passed: verify. | |
| index | No | Follow the link at this zero-based index of the extracted links. | |
| sms_id | Yes | SMS id (uuid) whose extracted link to follow. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully carries the burden. It discloses SSRF-guarded, https-only, max 5 redirects, and the return structure {requested_url, final_url, status, redirects, ok}. This is comprehensive for a server-side GET 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 concise sentences with no wasted words. The first sentence covers purpose and behavior, the second covers return format. Structure is ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explicitly states the return fields. All 4 parameters are explained, behavior is detailed, and the tool's role among siblings (SMS link following) is clear. Complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, but the description adds significant meaning: it explains the default class is 'verify', the mutual exclusivity of url/class/index, and that url must be one of the extracted links. This enriches understanding beyond the schema alone.
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 follows a link from an SMS via server-side GET, and distinguishes itself by referencing the similar follow_link tool for email. The verb 'follow' and resource 'link' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use (for SMS links) and mentions defaults (verify class) and options (class, index, exact URL). While it references follow_link's semantics, it does not explicitly exclude cases or differentiate from sibling tools like wait_for_sms, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachmentAInspect
One attachment's decoded bytes, base64-encoded (up to 1 MiB — larger files must be fetched from GET /v1/messages/{id}/attachments/{index}). Index against the attachments array on get_message.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Zero-based index into the message's attachments array. | |
| message_id | Yes | Message id (uuid). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the base64 encoding, size limit, and alternative endpoint, but does not mention error handling (e.g., out-of-bounds index) or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key information (bytes, encoding, size limit, alternative). No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description explains return format and size limit. Covers main usage but lacks error behavior or rate limits. Adequate for a simple retrieval 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 baseline is 3. Description adds no additional semantic detail beyond what is already in the parameter descriptions ('uuid', 'zero-based index'). No 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?
Description clearly states it returns one attachment's decoded bytes base64-encoded, specifies size limit and alternative for larger files, and explains indexing against the attachments array. Distinguished from sibling tools like get_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use (for attachments up to 1 MiB) and provides alternative for larger files. Mentions indexing context but lacks explicit when-not-to-use or alternatives beyond the REST endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linksAInspect
All links extracted from one message, each with anchor text and a class guess (verify | reset | unsubscribe | other). If you are still waiting for the email, prefer wait_for_link.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | Message id (uuid) from list_messages or wait_for_message. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the tool extracts links, implying a read-only operation, but does not explicitly confirm non-destructiveness or discuss error cases (e.g., missing message). The classification aspect ('class guess') adds some value, but transparency is incomplete.
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 the first sentence clearly stating the tool's function and the second providing usage guidance. Every word adds value, no redundancy, and key info 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?
For a simple one-parameter tool with no output schema, the description adequately covers purpose, parameter source, output details, and an alternative tool. It feels complete and leaves no obvious gaps for an agent to misunderstand.
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% for the single parameter, but the description adds meaning by specifying the parameter comes from list_messages or wait_for_message, which is not in the schema. It also describes the output format (anchor text and class guess), going beyond the bare schema 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?
The description clearly states it extracts all links from a single message, including anchor text and class guesses. It distinguishes itself from wait_for_link by advising to use that tool when still waiting for the email. The verb 'extracted' implies retrieval, but a more explicit verb like 'get' or 'list' would be clearer.
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 preferring wait_for_link if still waiting for the email, which is a clear alternative. It does not mention other exclusions or prerequisites, but the guidance is specific and helpful for choosing between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messageAInspect
Full detail of one message: text/html bodies, headers, extracted OTP candidates and classified links, attachment metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | Message id (uuid) from list_messages or wait_for_message. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes output content but does not disclose behavioral traits like side effects, permissions, or idempotency. For a read operation, minimal behavioral info is acceptable, but more would improve 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?
Single concise sentence that front-loads the purpose and lists contents efficiently. 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?
For a simple one-param tool with no output schema, the description covers what it returns well. However, it lacks contextualization against many sibling tools; still sufficient for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter description already providing context (message id from list_messages). The description adds no additional parameter meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves full details of one message and lists specific components (text/html bodies, headers, OTP, links, attachment metadata). It distinguishes from siblings like list_messages and specific extractors like get_otp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this vs alternatives like get_links or get_attachment. The parameter description implies it requires a message id from list_messages, but usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_otpAInspect
The OTP/verification code extracted from one message: best candidate plus ranked alternatives. If you are still waiting for the email, prefer wait_for_otp.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | Message id (uuid) from list_messages or wait_for_message. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'best candidate plus ranked alternatives' but does not explain what determines 'best' or how the ranking works. It also does not disclose whether this is a read-only operation (likely) or any side effects, leaving significant behavioral ambiguity.
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 composed of two succinct sentences that front-load the key information. Every word adds value, and there is no redundancy or unnecessary detail.
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 low complexity (one parameter, no output schema), the description is fairly complete. It explains what the tool returns and when to use an alternative. However, it could be more complete by clarifying the output format or how to interpret 'ranked alternatives.'
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 a full description for the only parameter (message_id: 'Message id (uuid) from list_messages or wait_for_message.'). The tool description adds no additional meaning beyond this, 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 'OTP/verification code extracted from one message: best candidate plus ranked alternatives.' It specifies the resource (OTP from a message) and the action (extract), and hints at the output format with 'best candidate plus ranked alternatives,' distinguishing it from sibling tools like get_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when not to use this tool: 'If you are still waiting for the email, prefer wait_for_otp.' This provides clear guidance on choosing between siblings, and the context is directly actionable for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_smsAInspect
Full detail of one SMS: text, sender, extracted OTP candidates and classified links, expiry.
| Name | Required | Description | Default |
|---|---|---|---|
| sms_id | Yes | SMS id (uuid) from list_sms or wait_for_sms. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the specific data returned (text, sender, OTP, links, expiry). However, it does not state that the operation is read-only or any side effects, but the nature of 'get' implies no mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no superfluous words. Essential information is front-loaded and efficiently packed.
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 single parameter and no output schema, the description adequately covers what the tool returns. It does not mention related sibling tools explicitly, but the context is sufficient for an agent to infer usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description ('SMS id (uuid) from list_sms or wait_for_sms'). The tool description adds no extra meaning for the parameter, 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 uses a specific verb ('get') and resource ('SMS'), and details the output fields (text, sender, OTP candidates, links, expiry), clearly distinguishing it from siblings like list_sms (lists) or wait_for_sms (waits for arrival).
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 ('Full detail of one SMS'), but no explicit guidance on when to use versus alternatives like get_otp (only OTP) or get_message (possibly email). No when-not-to-use or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domainsAInspect
List the account's domains (custom ones with verification state and pending DNS setup records, plus the shared domains).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral aspects: it returns domains with verification state and pending DNS setups. It does not mention authentication, rate limits, or pagination, but for a zero-parameter list tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that efficiently conveys the tool's scope without 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?
For a simple list tool with no parameters, the description completely covers what is returned and the distinction between custom and shared domains. No output schema exists, but the description adequately informs the agent of the output content.
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 no parameters, so the description does not need to add meaning beyond the schema. Schema coverage is trivially 100%, and no additional parameter info is needed.
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 domains associated with the account, specifically mentioning custom domains with verification state and pending DNS setup records, along with shared domains. This distinguishes it from sibling tools like create_domain or delete_domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing domains but provides no explicit guidance on when to choose this tool over alternatives or any exclusions. It lacks explicit context for 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.
list_inboxesAInspect
List the account's active inboxes with their addresses and message counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates a read operation (listing), but does not disclose other behavioral traits such as side effects, rate limits, or authentication requirements. The description is minimal and lacks depth.
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, clear sentence that effectively communicates the tool's function without unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides basic information (addresses and message counts) but omits potential details like whether an inbox ID or other metadata is returned. For a simple list tool, it is functional but could be more 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?
With zero parameters, schema coverage is 100%. The description adds no parameter specifics because none exist, so baseline for no parameters is appropriate. It does not need to add 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 it lists inboxes, specifying 'active inboxes' with 'addresses and message counts'. The verb 'list' and resource 'inboxes' are direct, distinguishing it from sibling tools like create_inbox or delete_inbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving inbox information but provides no explicit guidance on when to use this tool versus alternatives like list_messages or list_domains. The distinction is based solely on the resource type, which is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_keysAInspect
List the account's API keys (metadata only — never the key material).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that only metadata is returned, not key material, which is a critical safety trait. However, it lacks details on pagination, ordering, 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?
One sentence, no wasted words, and the parentheses add clarity. Extremely concise while conveying the key 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?
No output schema exists, so description should clarify what metadata is returned (e.g., key names, IDs). It fails to do so. However, for a zero-param list tool, the description is minimally complete but leaves ambiguity.
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?
No parameters exist, so baseline 4 applies. The description does not need to elaborate on parameters, but it correctly states the tool's scope without adding param info.
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', resource 'API keys', and scope 'account's'. It distinguishes itself from sibling tools like 'create_key' and 'revoke_key' by emphasizing 'metadata only — never the key material'.
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 does not explicitly provide when to use or compare to alternatives. It only states what the tool does, leaving usage guidance implicit. For a simple list tool, this is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_messagesAInspect
List messages in an inbox (id, from, subject, received_at, tls per message). Set wait to long-poll for new mail; use since as a cursor to skip messages you already processed. Returns summaries — call get_message for bodies and extracted data.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Long-poll up to this many seconds (max 60) for a matching message instead of returning an empty list immediately. | |
| match | No | Filter: `subject:term`, `from:term`, or `to:term`; a bare term matches the subject. | |
| since | No | Only messages received after this RFC 3339 timestamp. Use the received_at of the last message you saw as a cursor. | |
| inbox_id | Yes | Inbox id (uuid). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses it returns summaries, long-poll behavior, and cursor usage. Since no annotations, description carries burden; it adequately covers read-only nature and key behaviors, though missing pagination 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?
Two sentences, front-loaded with purpose and return fields, followed by usage tips. No redundant information, 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?
Covers key behaviors: return summaries, long-poll, cursor. Missing pagination or limit information, but sufficient for a simple list tool with well-documented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, baseline 3. Description adds context for 'wait' and 'since' usage but does not enhance 'match' parameter beyond schema. Minimal added value over 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 explicitly states the tool lists messages in an inbox and specifies the returned fields (id, from, subject, received_at, tls). It clearly distinguishes from sibling get_message by noting it returns summaries.
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 guidance on when to use long-poll (wait parameter) and cursor usage (since). Differentiates from get_message for full body retrieval. Does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_phone_numbersAInspect
List the account's active phone numbers with id, phone_number (E.164), status, created_at, and release_after (non-null when a plan downgrade scheduled the number for auto-release; upgrading before that date keeps it).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden; it explains the returned fields and the special meaning of release_after. It does not mention pagination or ordering, but given zero parameters, simple listing is assumed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no wasted words; every part 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 zero-parameter list tool without output schema, the description is fairly complete, explaining return fields and the release_after nuance. However, it could mention whether it includes only numbers in active state and if any filtering is possible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no parameters, so description is not required to document them; the baseline score of 4 applies as there is no need for additional 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 clearly uses the verb 'list' and specifies the resource 'active phone numbers' with exact fields returned, distinguishing it from sibling list tools that target different resources like domains or inboxes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing active phone numbers but provides no explicit guidance on when to use this tool versus alternatives like release_phone_number, nor does it mention prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_smsAInspect
List SMS received on a phone number (id, from_number, text, received_at per message — the text rides in the summary). Set wait to long-poll for new messages; use since as a cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Long-poll up to this many seconds (max 60) for a matching message instead of returning an empty list immediately. | |
| match | No | Filter: `from:term`, `to:term`, or `body:term`; a bare term matches the body. | |
| since | No | Only messages received after this RFC 3339 timestamp. Use the received_at of the last message you saw as a cursor. | |
| phone_number_id | Yes | Phone number id (uuid). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It mentions that 'text rides in the summary' (clarifying output format) and describes long-poll behavior. However, it does not disclose auth requirements, rate limits, or whether the operation is read-only, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose and output fields, the second explains key parameters. No redundant wording, and essential 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?
Given no output schema, the description lists return fields (id, from_number, text, received_at) and mentions the text in summary. It covers filtering via 'match' and cursor via 'since', but lacks explicit pagination or ordering details, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the typical use pattern for 'wait' and 'since' beyond the schema descriptions, such as 'Set wait to long-poll for new messages; use since as a cursor.'
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 'List SMS received on a phone number' with specific fields (id, from_number, text, received_at). The verb 'List' and resource 'SMS' are explicit, and it distinguishes from siblings like 'get_sms' (single) and 'wait_for_sms' (polling only).
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 'wait' (long-poll for new messages) and 'since' (as a cursor), providing clear usage context. However, it does not explicitly contrast with alternative tools like 'wait_for_sms' or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksAInspect
List the account's webhook endpoints (secrets masked to a hint).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions the secret masking behavior, but lacks details on pagination or idempotency. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, straight to the 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 tool with no output schema and 0 parameters, the description is reasonably complete but could hint at the output structure (e.g., list of endpoint objects).
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?
No parameters exist, so baseline is 4. The description adds value by noting the secret masking, which relates to the output schema not the input 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 lists webhook endpoints and adds a specific detail about secrets being masked, which distinguishes it from sibling tools like create_webhook or delete_webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. For example, it doesn't mention that this lists all webhooks or that filtering is not supported.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_phone_numberAInspect
Release a phone number back to the provider and delete its messages. Irreversible — the number returns to the provider pool and may be assigned elsewhere.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number_id | Yes | Phone number id (uuid) from create_phone_number or list_phone_numbers. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers the irreversible nature, deletion of messages, and reassignment of the number. Provides sufficient transparency for an agent.
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. Front-loaded with the primary action and key consequence.
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 tool with one parameter and no output schema, the description is adequate. It covers the action, irreversibility, and effect, though it could mention any prerequisites.
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% for the single parameter. Description does not add additional meaning beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (release a phone number) and the consequences (delete messages, return to provider pool). Distinguishes well from sibling tools like create_phone_number and list_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?
No explicit guidance on when to use this tool vs alternatives or prerequisites. Only implies it's for releasing a number, but lacks context on conditions or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_keyAInspect
Revoke an API key immediately. Revoking the key this session authenticated with locks this MCP connection out.
| Name | Required | Description | Default |
|---|---|---|---|
| key_id | Yes | Key id (uuid) from list_keys. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses key behaviors: immediate revocation and potential lockout of the current MCP connection. This provides sufficient transparency for a simple tool, though it could mention reversibility or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, using two sentences to convey the action, immediacy, and a critical edge case (locking the connection). No unnecessary words or repetition.
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 tool with no output schema, the description covers the essential action and a key behavioral consequence. It is complete enough for safe invocation, though it could mention the outcome when revoking a non-authenticated key.
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 has 100% description coverage for the single parameter key_id, explaining it as a UUID from list_keys. The description does not add additional semantic meaning beyond what the schema provides, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Revoke an API key') and the resource ('API key'), distinguishing it from sibling tools like create_key or list_keys. It also adds context about the immediate effect on the current session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (need to revoke a key) and warns about the consequence of locking out the current session if the authenticated key is revoked. However, it does not explicitly mention when not to use or suggest alternatives like deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_webhookAInspect
Queue a test event to a webhook endpoint to confirm it receives and verifies signed deliveries.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | Webhook endpoint id (uuid) from create_webhook or list_webhooks. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It indicates a write operation ('Queue a test event') and mentions receipt and verification, but does not disclose side effects, idempotency, rate limits, or whether it modifies state. The description adds some behavioral context but lacks depth.
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 wasted words. It efficiently conveys the action and purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description adequately explains the purpose but does not mention the return value or behavior details (e.g., whether it returns delivery status). It is minimally complete but could include more context about expected outcomes.
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 a description for webhook_id: 'Webhook endpoint id (uuid) from create_webhook or list_webhooks.' Schema coverage is 100%, so baseline is 3. The description does not add additional meaning beyond the schema's parameter documentation.
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 'Queue', the resource 'a test event to a webhook endpoint', and the purpose 'to confirm it receives and verifies signed deliveries'. It distinguishes itself from sibling tools like create_webhook (which creates an endpoint) and webhook_deliveries (which lists past deliveries).
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 use when testing a webhook endpoint, but does not explicitly state when to use this tool vs alternatives like enable_webhook or webhook_deliveries. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_domainAInspect
Run the TXT + MX DNS checks for a pending custom domain right now and return the result. Call after publishing the records from create_domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | Domain id (uuid) from create_domain or list_domains. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It states the tool runs checks and returns a result, implying a read-like action. However, it does not specify whether the operation is idempotent, what happens if the domain is not pending, or any side effects like logging or triggers.
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 wasted words. The first sentence states the action and outcome, the second provides usage context. Front-loaded and 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 tool is simple with one parameter and no output schema. The description explains what it does and when to use it, but lacks details about the result format (e.g., boolean, JSON fields). For a straightforward check, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'domain_id' has full schema coverage (100%) with a description already indicating its source ('from create_domain or list_domains'). The tool description adds no extra meaning beyond the schema, meeting the baseline for covered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs TXT+MX DNS checks for a pending custom domain, with a specific verb ('verify') implied. It distinguishes from siblings like create_domain (which sets up the domain) and list_domains (which lists them).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to 'Call after publishing the records from create_domain', providing clear context for when to use the tool. Does not mention when not to use it or contrast with all siblings, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_linkAInspect
Block until a message containing an extracted link arrives, then return that link (optionally only a given class: verify | reset | unsubscribe | other). The one-call answer to 'trigger the email, get the magic/verification link'. Returns {message_id, link, links}.
| Name | Required | Description | Default |
|---|---|---|---|
| class | No | Only accept links classified as this: verify | reset | unsubscribe | other. Omit for the first link of any class. | |
| match | No | Filter: `subject:term`, `from:term`, or `to:term`; a bare term matches the subject. | |
| since | No | Only consider messages received after this RFC 3339 timestamp. Omit to accept a message that already arrived. | |
| inbox_id | Yes | Inbox id (uuid) to watch. | |
| timeout_seconds | No | Give up after this many seconds (default 45, max 60). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses blocking behavior, return fields (message_id, link, links), optional class filtering, and timeout. It accurately describes the tool's synchronous nature and output.
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, front-loading the core function, then use-case, then return fields. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description includes return fields and explains blocking and filtering. For a tool with 5 parameters (1 required) and a clear use case, the description covers all necessary context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The description adds minimal extra meaning beyond the schema, mainly repeating the class option. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool blocks until a link arrives and returns it, with optional class filtering. It distinguishes itself as the one-call solution for getting verification links, setting it apart from siblings like wait_for_message or get_links.
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 it (after triggering an email) and mentions optional class filtering, but does not explicitly compare to alternatives or state when not to use it. The guidance is clear but lacks exclusionary context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_messageAInspect
Block until a matching message arrives in the inbox (or timeout_seconds elapses), then return its full detail. Call this right after triggering an email flow in the app under test.
| Name | Required | Description | Default |
|---|---|---|---|
| match | No | Filter: `subject:term`, `from:term`, or `to:term`; a bare term matches the subject. | |
| since | No | Only consider messages received after this RFC 3339 timestamp. Omit to accept a message that already arrived. | |
| inbox_id | Yes | Inbox id (uuid) to watch. | |
| timeout_seconds | No | Give up after this many seconds (default 45, max 60). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions blocking and timeout but does not specify what happens on timeout (e.g., returns null or error). It also doesn't clarify if the message is consumed or remains in the inbox. This ambiguity affects 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 sentences, front-loaded with key information (blocking, matching, timeout). No superfluous words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Captures purpose, usage timing, and parameter semantics well. However, lacks detail on timeout behavior and return format (no output schema). Also doesn't address whether the message is consumed or remains. This leaves gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the match filter syntax (e.g., 'subject:term') and the context of the 'since' parameter. It also notes the default timeout. This enhances understanding 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 action (blocks/wait), the resource (matching message in inbox), and the result (returns full detail). It also provides context for usage, distinguishing from sibling tools like get_message or list_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to call this after triggering an email flow, giving clear situational guidance. It does not explicitly state when not to use it, but the context is sufficient for an AI agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_otpBInspect
Block until a message with an extracted OTP/verification code arrives, then return the code. The one-call answer to 'trigger signup, read the OTP, type it in'. Returns {message_id, best, candidates}.
| Name | Required | Description | Default |
|---|---|---|---|
| match | No | Filter: `subject:term`, `from:term`, or `to:term`; a bare term matches the subject. | |
| since | No | Only consider messages received after this RFC 3339 timestamp. Omit to accept a message that already arrived. | |
| inbox_id | Yes | Inbox id (uuid) to watch. | |
| timeout_seconds | No | Give up after this many seconds (default 45, max 60). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description states it blocks but does not detail timeout behavior, error handling, or concurrency implications. Missing edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded purpose. Could add minor usage guidance without significant bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains return shape, but lacks output schema. Missing details on timeout behavior, prerequisites (inbox existence), and error states.
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 covers all parameters with descriptions (100%). Tool description adds no extra parameter context, 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?
Clearly states verb 'block/wait' and resource 'OTP/verification code', with return type. Distinguishes from siblings like get_otp, wait_for_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions signup flow but lacks explicit when-not-to-use or alternatives. Does not differentiate from wait_for_message or get_otp.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_smsAInspect
Block until a matching SMS arrives on the phone number (or timeout_seconds elapses), then return its full detail including extracted data. Call this right after triggering an SMS flow in the app under test.
| Name | Required | Description | Default |
|---|---|---|---|
| match | No | Filter: `from:term`, `to:term`, or `body:term`; a bare term matches the body. | |
| since | No | Only consider messages received after this RFC 3339 timestamp. Omit to accept a message that already arrived. | |
| phone_number_id | Yes | Phone number id (uuid) to watch. | |
| timeout_seconds | No | Give up after this many seconds (default 45, max 60). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must cover behavior. It mentions blocking, timeout, and returning full detail, but lacks details on side effects or cancellation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. First sentence states purpose and behavior, second gives usage guidance. Very 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?
Covers main points: blocking, timeout, matching, return. No output schema, so return value described as 'full detail including extracted data' is adequate but vague. Fairly complete for a waiting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds 'including extracted data' but doesn't provide significant additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it blocks until a matching SMS arrives, using specific verb 'Block' and resource 'SMS on the phone number'. It distinguishes from siblings like wait_for_message and wait_for_otp.
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 guidance: 'Call this right after triggering an SMS flow in the app under test.' This sets clear context, though no alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_sms_otpAInspect
Block until an SMS with an extracted OTP/verification code arrives on the phone number, then return the code. The one-call answer to 'trigger SMS verification, read the code, type it in'. Returns {sms_id, best, candidates}.
| Name | Required | Description | Default |
|---|---|---|---|
| match | No | Filter: `from:term`, `to:term`, or `body:term`; a bare term matches the body. | |
| since | No | Only consider messages received after this RFC 3339 timestamp. Omit to accept a message that already arrived. | |
| phone_number_id | Yes | Phone number id (uuid) to watch. | |
| timeout_seconds | No | Give up after this many seconds (default 45, max 60). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states blocking behavior and the extracted OTP return structure ({sms_id, best, candidates}). No annotations were provided, so the description carries the full burden, and it does so well without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences delivering the core purpose and return format with zero extraneous information. Front-loaded with the blocking action and result.
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 behavior, blocking, and return fields. Given the complexity of waiting for a message with extraction, it is adequate. Minor omission: no mention of timeout behavior or error conditions, but those are handled in parameter schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with detailed descriptions for all parameters. The description adds no new parameter-level insight beyond the schema, meeting the baseline expectation but not exceeding 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 clearly states the tool blocks until an SMS with an extracted OTP arrives and returns the code. It distinguishes from siblings like 'wait_for_sms' by emphasizing OTP extraction and being a one-call answer for verification flows.
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 concrete use case ('trigger SMS verification, read the code, type it in') and positions it as a convenient combined operation. However, it does not explicitly state when not to use it or compare to alternatives like 'get_otp'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webhook_deliveriesAInspect
Recent delivery attempts for one webhook endpoint (status, attempts, last error) — the first place to look when events aren't arriving.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max deliveries to return (1..=200, default 50). | |
| webhook_id | Yes | Webhook endpoint id (uuid). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the read-only nature (querying delivery history) and returned fields, but does not specify recency limits or pagination. Adequate but could be more detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose and key details. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should detail return value structure. It mentions fields but lacks specifics on whether it returns a list or single item, and pagination. Nevertheless, sufficient for a simple diagnostic 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 covers 100% of parameters with descriptions. Description adds minimal value beyond implying webhook_id is the endpoint identifier. 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 clearly states it returns recent delivery attempts for one webhook endpoint, listing fields (status, attempts, last error) and providing a usage context ('first place to look when events aren't arriving'), distinguishing it from diagnostic siblings like test_webhook.
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 suggests using this tool for troubleshooting failed deliveries, but does not mention when not to use it or alternative tools like test_webhook for testing. Good context but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!