Server Details
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
- 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.3/5 across 29 of 29 tools scored. Lowest: 3.3/5.
Each tool targets a distinct resource or action: domain management (addDomain, verifyDomain), sending (sendEmail, replyToEmail), receiving (getEmail, listEmails), webhooks (createEndpoint, listWebhookDeliveries), status (getAccount, getInboxStatus), etc. There is no overlap in purpose, and descriptions clearly differentiate them.
All tools follow a consistent verb_noun pattern in snake_case, such as listDomains, createFilter, downloadEmailAttachments, and getSentEmail. The verbs (get, list, create, delete, send, reply, etc.) are used predictably, with no mixing of conventions.
29 tools is slightly on the high side but still reasonable for an email server covering domains, sending, receiving, webhooks, filters, and status. Each tool serves a specific purpose and earns its place, though some consolidation might be possible.
The tool set covers core email workflows: domain setup (add, verify, list), sending/receiving, threading, webhook lifecycle, and filtering. Minor gaps exist, such as missing deleteDomain or updateEndpoint, but the surface is largely complete for the intended domain.
Available Tools
29 toolsaddDomainAdd domainAInspect
Claim a new domain and receive the DNS records to publish. Returns dns_records with the exact records to add. If the domain has an mx_conflict (existing mail provider), re-call with confirmed: true to proceed. After publishing DNS records, call verifyDomain to complete setup.
| Name | Required | Description | Default |
|---|---|---|---|
| requestBody | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses non-read-only nature (claiming), conflict resolution, and return of dns_records. Adds context beyond annotations about the flow, though edge cases like domain already claimed are not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded main action, no unnecessary words. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main claim action, conflict case with re-call, and next step (verifyDomain). With an output schema present, return values are hinted. Complete for agent 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?
Description explains both domain and confirmed parameters, but the input schema already contains similar descriptions. Adds minimal new meaning 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?
Clearly states the tool claims a domain and returns DNS records. Distinguishes from sibling tools like verifyDomain, which completes setup, and listDomains, which lists existing domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use for initial claim, re-call with confirmed=true if mx_conflict occurs, and follow with verifyDomain. Offers a clear workflow with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
awaitReplyAwait replyARead-onlyIdempotentInspect
Get the threaded reply to a sent email — the canonical 'did they reply yet?' call. Pass the sent email's id (from a sendEmail response). With wait=true it long-polls up to wait_timeout_ms for the reply to arrive (synchronous agent-to-agent chat); with wait=false (default) it returns immediately with the reply if one has arrived, else reply=null. Matches on the reply's threading, not a from/subject guess.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The sent email id to fetch the reply for (from a sendEmail/replyToEmail response). | |
| wait | No | When "true", long-poll until a reply arrives or wait_timeout_ms elapses. Default no-wait. | |
| wait_timeout_ms | No | How long to wait when wait=true (1000–30000 ms, default 10000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds beyond annotations: describes long-polling, returns reply or null, matches on threading, and explains wait parameter and timeout. No contradiction with readOnlyHint as it only fetches data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema existing, description covers all essential context: matching logic, wait behavior, id source. Sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description enriches semantics by explaining id source (from sendEmail response), wait purpose (synchronous chat), and timeout range. Adds value beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets the threaded reply to a sent email, identifies it as the canonical 'did they reply yet?' call, and distinguishes from siblings by specifying threading-based matching rather than guessing from/subject.
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 pass the sent email's id from a sendEmail response, explains wait behavior for synchronous vs immediate check, and implies this is the direct tool for checking replies without mentioning alternatives needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelScheduledSendCancel scheduled sendADestructiveInspect
Cancel a still-scheduled send before it dispatches (terminal status "canceled"; the same idempotency key becomes reusable). Pass the sent email id from a sendEmail response that used scheduled_at, or from listSentEmails. Returns a conflict error once the send has already started dispatching.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Sent email ID of the scheduled send, from a sendEmail response or listSentEmails. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds behavioral details beyond annotations: it explains the outcome (terminal status 'canceled'), the side effect (idempotency key becomes reusable), and an error condition (conflict if already dispatching). This provides useful context that annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. No redundant information. The description is concise and each sentence serves a purpose: first sentence states the action and outcome, second sentence provides parameter source and error condition. It is appropriately sized for the simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema present), the description covers key aspects: what it does, when to use it, how to get the input, and an error scenario. It does not explain return values, but the output schema handles that. It is complete enough for effective 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?
With 100% schema coverage, the baseline is 3. The description adds value by explaining how to obtain the 'id' parameter: from a sendEmail response that used scheduled_at, or from listSentEmails. This clarifies the source and context, making it more helpful than the schema description 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 verb 'cancel' and the resource 'scheduled send'. It distinguishes this tool from siblings by specifying it applies only to still-scheduled sends, and mentions the terminal status 'canceled' and idempotency key reuse, which uniquely identifies its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context on when to use the tool: pass the sent email id from a sendEmail response that used scheduled_at, or from listSentEmails. It also warns about a conflict error if the send has already started dispatching. No explicit when-not or alternatives are given, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createEndpointCreate webhook endpointAInspect
Create a webhook endpoint to receive email.received events. If an endpoint with the same URL already exists but is deactivated, it is reactivated. After creating, call testEndpoint to confirm your signature verifier accepts the payload.
| Name | Required | Description | Default |
|---|---|---|---|
| requestBody | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description reveals key behaviors: reactivation of deactivated endpoints with the same URL and the need for post-creation testing. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with clear, front-loaded information. Every sentence adds value (purpose, reactivation, follow-up step). No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers main purpose and a key behavior, but omits any mention of permissions, error handling, or return values. With an output schema present, return values are less critical, but completeness is still moderate.
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 0%, and the description only mentions URL behavior briefly, leaving other parameters (rules, enabled, domain_id) unexplained. The schema provides descriptions, but the tool description should compensate more.
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 email.received events, and distinguishes itself from siblings like testEndpoint and deleteEndpoint by mentioning reactivation and post-creation testing.
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 follow-up step (call testEndpoint) but lacks explicit guidance on when to use this tool versus alternatives like listEndpoints or deleteEndpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createFilterCreate filterAInspect
Create a whitelist or blocklist filter rule. Patterns are stored lowercase. Per-domain filters require a Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| requestBody | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond annotations, such as patterns being stored lowercase and Pro plan requirement. But it lacks information on idempotency, error handling, or response behavior, which is partially covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and front-loaded with the core purpose. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a nested parameter and output schema, the description provides minimal context beyond creation. It does not cover return values, error conditions, or uniqueness, making it adequate but not 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 0% schema description coverage in the tool description, the description adds one behavioral detail ('patterns stored lowercase') but does not fully explain each parameter's meaning or constraints, which are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a whitelist or blocklist filter rule.' This is a specific verb+resource combination that distinguishes it from siblings like deleteFilter and listFilters.
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 'Patterns are stored lowercase' and 'Per-domain filters require a Pro plan,' providing context for usage. However, it does not explicitly state when to use this tool versus alternatives or 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.
deleteEndpointDelete webhook endpointADestructiveInspect
Soft-delete a webhook endpoint. The endpoint will no longer receive deliveries.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Endpoint ID from listEndpoints or createEndpoint. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive (destructiveHint=true), so the description's 'soft-delete' adds a nuance beyond annotations, but it doesn't clarify if the deletion is reversible or detail other behaviors like permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, substantive sentences with no wasted words. The key 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?
For a simple tool with one required parameter and an output schema, the description adequately covers purpose and effect. However, it could mention idempotency or reversibility, but overall it's fairly 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 description coverage is 100% (id parameter fully described), so baseline is 3. The description adds no further parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('soft-delete') and the resource ('webhook endpoint'), and explains the effect (no longer receives deliveries). This distinguishes it from sibling tools like createEndpoint or listEndpoints.
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, no prerequisites or when-not-to-use conditions. The schema parameter description hints that the ID comes from listEndpoints, but the main description lacks explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteFilterDelete filterADestructiveInspect
Delete a filter rule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Filter rule ID from listFilters or createFilter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true, so the agent knows it's destructive. The description adds no further behavioral context (e.g., irreversibility), but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at one sentence, but could be slightly more informative. Still efficient and maintains clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of a delete operation, the output schema existence, and annotations covering destructiveness, the description is largely complete. However, it lacks mention of idempotency (idempotentHint=false) or any post-deletion effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage and the description adds 'Filter rule ID from listFilters or createFilter,' clarifying the source of valid IDs beyond what the schema provides (just uuid format).
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 'Delete a filter rule' uses a specific verb and resource, clearly distinguishing it from sibling tools like createFilter or listFilters.
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, nor any prerequisites or conditions. The schema hints that the ID comes from listFilters or createFilter, but the description itself provides no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
downloadDomainZoneFileDownload DNS zone fileARead-onlyIdempotentInspect
Download a BIND-format DNS zone file for a domain. Useful when users want to import all required DNS records at once rather than copying them individually. Returns plain text in BIND zone file format.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Domain ID from listDomains or addDomain. | |
| outbound_only | No | When true, include only outbound DNS records (SPF, DKIM, DMARC). Defaults to all records for unverified domains, outbound-only for verified. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, signaling a safe read operation. The description adds value by explaining the output format (plain text BIND zone file) and the use case involving bulk import. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of just two sentences that are front-loaded with the core purpose. Every sentence adds useful information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for an agent to understand the tool's function and output format. With an output schema present (implied), the description does not need to detail return values. The parameters are well-described in the schema. The description could briefly mention the outbound_only parameter's behavior, but it is already covered in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The tool description does not add extra meaning about the parameters 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 tool's purpose: downloading a BIND-format DNS zone file for a domain. The verb 'download' and resource 'DNS zone file' are specific, and the format is mentioned. This distinguishes it from sibling tools like addDomain or verifyDomain, which serve different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Useful when users want to import all required DNS records at once rather than copying them individually.' This gives context for when to use the tool. However, it does not explicitly state when not to use it or mention alternatives, though the sibling tools are distinct enough that no confusion arises.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
downloadEmailAttachmentsDownload email attachmentsARead-onlyIdempotentInspect
Download all attachments for an inbound email as a gzip-compressed tar archive. Returns the archive as a base64-encoded string along with the attachment count and SHA-256 digest. Prefer getEmail first to check the attachment manifest before downloading.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Inbound email ID. | |
| token | No | Signed download token from a webhook payload. Optional — the bearer token is used when this is omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the description is consistent and adds context: the return format (base64, count, digest) and the recommendation to use getEmail first. There is no contradiction. The description does not mention rate limits or authentication needs, but the safety profile is covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states purpose and outcome, second gives usage guidance. It is front-loaded, concise, and every sentence adds value. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and the presence of an output schema (mentioned in context), the description adequately covers the return values (base64 archive, count, SHA-256 digest) and the workflow hint. No missing critical details for a read-only download 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% (both parameters documented), so baseline is 3. The description adds value by explaining that the token parameter is optional and that the bearer token is used when omitted. It also advises on workflow (check attachment manifest first), indirectly guiding parameter usage. No additional parameter constraints are 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 downloads all attachments from an inbound email and returns a gzip-compressed tar archive as a base64-encoded string with count and SHA-256 digest. It specifies the resource (inbound email attachments) and action (download), distinguishing it from siblings like getEmail by advising to check the attachment manifest first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Prefer getEmail first to check the attachment manifest before downloading.' This recommends a workflow and implies when not to use this tool directly. The optional token parameter is also explained. However, it does not explicitly state when not to use it or list alternative tools for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAccountGet accountARead-onlyIdempotentInspect
Use this when you need the authenticated Primitive account summary, including email, plan, onboarding state, and webhook secret rotation time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, which the description complements by detailing the specific fields returned (email, plan, etc.). No contradictions; additional context is provided beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the purpose and key content, 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 parameters and the presence of an output schema, the description fully informs the agent about the tool's return value (account summary with listed fields). No gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (schema coverage 100%), so the description naturally does not add parameter details. The baseline for zero parameters is 4, and the description is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'account summary', listing specific fields (email, plan, onboarding state, webhook secret rotation time). It distinguishes itself from sibling tools like getConversation or getEmail by focusing on the account itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it ('when you need the authenticated Primitive account summary'), providing clear context. However, it does not mention alternatives or when not to use it, which would elevate the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getConversationGet conversationARead-onlyIdempotentInspect
Get the full conversation an inbound email belongs to as ordered, chat-model-ready turns with bodies. Each message is oldest-first with a direction (inbound/outbound) and a derived role (inbound→user, outbound→assistant). For a brand-new message, returns just that one turn. The response includes a truncated boolean (true when the message cap was reached) and a message_count field.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of any inbound email in the conversation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant detail beyond annotations: ordered turns, direction/role derivation, truncated boolean, message_count field, and behavior for brand-new messages. Annotations already indicate read-only, idempotent, non-destructive, and the description is consistent.
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-loaded with the core purpose, followed by important edge-case and output details. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter input and presence of an output schema, the description adequately covers the output structure and key behaviors. Minor omission: no mention of pagination or message cap value, but overall 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 input schema has full coverage (100%) for a single parameter with a clear description. The tool description adds slight extra context (oldest-first ordering, role derivation) but does not significantly expand on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the full conversation for an inbound email, ordered as chat-model-ready turns with direction and role. It is specific about the resource and verb, and distinguishes from siblings like getEmail and getThread by focusing on the full conversation.
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 context, such as returning a single turn for a new message, but does not explicitly state when to use this tool versus alternatives. It is clear but lacks explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getEmailGet emailARead-onlyIdempotentInspect
Use this when you need full details for one inbound email ID, including parsed bodies, threading metadata, SMTP envelope, webhook state, and replies.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Inbound email ID from listEmails or searchEmails. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's main contribution is listing the specific details returned (parsed bodies, threading, etc.). This adds value without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the usage condition. Every word is informative, with no redundancy or extraneous 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?
The tool has an output schema (not shown but present), so the description appropriately focuses on input semantics and included data. For a simple get-by-ID tool, it 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?
The single parameter 'id' is fully described in the schema (100% coverage). The description echoes that it is for an inbound email ID, adding no new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('get full details') and identifies the resource ('one inbound email ID'), listing included components (parsed bodies, threading, SMTP envelope, webhook state, replies). It clearly distinguishes from siblings like listEmails (list vs. detail) and getSentEmail (inbound vs. sent).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool ('when you need full details for one inbound email ID'), providing clear context. It does not explicitly mention when not to use it or alternatives, but the sibling list allows inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getInboxStatusGet inbox statusARead-onlyIdempotentInspect
Use this when the user asks whether inbound email is ready or needs setup. Returns domains, routes, deployed Functions, and recent inbound activity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds specifics about returned data types, which is useful beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first gives usage guidance, second lists return contents. 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 parameters, good annotations, and existing output schema, the description fully covers when to use and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters (0 params, schema coverage 100%). Description correctly has no param info, and none is needed. Baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states purpose: 'Use this when the user asks whether inbound email is ready or needs setup.' It also lists what it returns (domains, routes, deployed Functions, recent activity), distinguishing it from siblings like getOutboundStatus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: 'when the user asks whether inbound email is ready or needs setup.' No explicit when-not or alternatives, but the context is sufficient given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getOutboundStatusGet outbound statusARead-onlyIdempotentInspect
What can I send FROM? Lists this account's verified outbound (sendable) domains plus any domains still pending DNS verification, with next actions. Call this BEFORE sendEmail to pick a valid from domain — the account email is not necessarily sendable. The same sendable list is echoed in a cannot_send_from_domain error.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds behavioral detail about pending DNS verification and next actions, which is not covered by annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with a question that captures the tool's purpose. Every sentence is meaningful and contributes to understanding. 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?
With no parameters, clear annotations, and an output schema, the description fully equips the agent to decide when to call the tool. It explains the timing relative to sendEmail and the error context, which is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no parameters, and schema coverage is 100%. Description does not need to explain parameter semantics. The baseline for 0-param tools is 4, and the description provides no extraneous 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 starts with a clear question 'What can I send FROM?' and explicitly states it lists verified sendable domains and pending verification domains, with next actions. It distinguishes itself from sibling tools like 'listDomains' by focusing on outbound sendability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to call this BEFORE sendEmail to pick a valid from domain, and warns that the account email may not be sendable. Also mentions the error message that echoes this list, helping the agent understand when to use it to avoid errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSentEmailGet sent emailARead-onlyIdempotentInspect
Get the full record for a single sent email by id, including body_text and body_html. Use to inspect delivery details for a specific send — e.g. the SMTP response on a bounced row, or the gate denial reason on a gate_denied row.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Sent email ID from listSentEmails or a /send-mail response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context about what is returned (body_text, body_html) and specific use cases (SMTP response, gate denial reason), which are behavioral details beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second provides use-case examples. No wasted words, front-loaded with key information. Excellent conciseness for the complexity level.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, 100% schema coverage, good annotations, and an output schema), the description is complete. It explains what the tool does, what fields are included, and when to use it. No gaps remain.
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 single parameter 'id' described as 'Sent email ID from listSentEmails or a /send-mail response.' The tool description does not add additional parameter semantics beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Get the full record for a single sent email by id, including body_text and body_html.' It uses a specific verb and resource, and the sibling list includes similar tools like getEmail and listSentEmails, but this description uniquely specifies that it retrieves the full record for a sent email, differentiating it from others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: 'Use to inspect delivery details for a specific send — e.g. the SMTP response on a bounced row, or the gate denial reason on a gate_denied row.' This tells the agent when to use the tool. However, it does not mention when not to use it or offer direct alternatives, though the sibling names imply alternatives like listSentEmails.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getThreadGet threadARead-onlyIdempotentInspect
Get a conversation thread by id: metadata plus all inbound and outbound messages interleaved oldest-first. Each message has a direction (inbound/outbound) and id; fetch inbound message bodies via getEmail, or outbound bodies via getSentEmail. Discover thread_id from any email or sent-email record. Compare message_count against messages.length to detect truncation.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Thread ID from the thread_id field on any email or sent-email. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds valuable behavioral details: message ordering (oldest-first), message structure (direction, id), truncation detection, and cross-reference to other tools for full bodies. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no redundant information. The first sentence immediately states the core purpose and output structure. Subsequent sentences provide essential usage details. Efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (presumably detailing metadata and message fields), the description appropriately explains the thread structure, how to interpret completeness, and how to retrieve full message bodies. It leaves no critical gaps for a get-by-id 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 a clear description for the single parameter 'id'. The description reinforces the source of the ID (from any email or sent-email) and explains its role. This adds a helpful usage context 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 retrieves a conversation thread by ID, including metadata and all messages interleaved oldest-first. It specifies each message has direction and ID, and distinguishes from sibling tools like getEmail and getSentEmail by referencing them for fetching message bodies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on how to obtain the thread_id (from any email or sent-email record) and how to use the result (compare message_count vs messages.length for truncation, use getEmail/getSentEmail for bodies). Does not explicitly state when not to use this tool, but the context is sufficiently directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listDomainsList domainsARead-onlyIdempotentInspect
List all inbound domains for the organization, both verified and unverified. Each domain includes its verification status and DNS records. Use before addDomain to check whether a domain is already claimed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, idempotentHint: true, and destructiveHint: false. The description adds that the tool returns verification status and DNS records, which is useful context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words. It front-loads the action and scope, followed by a practical usage hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and an output schema present, the description fully covers the tool's behavior: listing all inbound domains with verification status and DNS records, and provides a use-case (before addDomain).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and the description adds meaning beyond the schema by explaining the output content (verification status, DNS records) and the tool's purpose, which is fully adequate given the parameter count is zero.
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', the resource 'inbound domains', and the scope 'both verified and unverified'. It also mentions the output includes verification status and DNS records, distinguishing it from related tools like addDomain.
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 'Use before addDomain to check whether a domain is already claimed', providing a clear when-to-use scenario and indicating an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listEmailsList inbound emailsARead-onlyIdempotentInspect
Use this when you need to browse inbound emails received at verified domains with cursor pagination, status filters, date filters, or sender/recipient search.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Long-poll up to this many seconds (0–30, default 0) holding the request for new mail instead of returning an empty page immediately. Requires `since`. Returns as soon as matching mail arrives, or an empty page when the wait elapses. | |
| limit | No | Maximum number of emails to return (1–100, default 50). | |
| since | No | Forward-tail cursor (a `meta.cursor` value, format `{ISO datetime}|{UUID}`): returns emails strictly NEWER than this position, oldest-first, for lossless polling of just-arrived mail. Mutually exclusive with `cursor`. | |
| cursor | No | Backward (history) pagination cursor from a previous response's `meta.cursor` field: returns emails OLDER than this position, newest-first. Mutually exclusive with `since`. | |
| search | No | Free-text search across sender, recipient, and subject. | |
| status | No | Filter to emails in this processing status. | |
| date_to | No | Inclusive upper bound on created_at (ISO 8601). | |
| date_from | No | Inclusive lower bound on created_at (ISO 8601). | |
| domain_id | No | Filter to emails received on a specific verified domain. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds behavioral details like pagination and filtering, but does not go beyond what annotations and schema already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and to the point. It could be slightly more structured, but it is efficient and covers the key features without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 optional parameters, high schema coverage, and an output schema, the description adequately covers the tool's functionality. It provides enough context for an agent to understand its purpose and select it appropriately.
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 detailed descriptions for each parameter. The tool description adds no extra semantics beyond summarizing the filters, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists inbound emails with cursor pagination and various filters. It is specific and aligns with the title 'List inbound emails', but does not explicitly differentiate from sibling tools like searchEmails or getEmail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool ('browse inbound emails'), but lacks guidance on when not to use it or alternatives. Given the many sibling tools, more explicit exclusions would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listEndpointsList webhook endpointsARead-onlyIdempotentInspect
List all active webhook endpoints for the organization. Each endpoint shows its URL, enabled state, and optional domain restriction.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's job is light. It adds value by specifying that each endpoint shows its URL, enabled state, and optional domain restriction. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the key action and resource, stating exactly what is listed. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, existing output schema, and annotations covering safety, the description is complete. It clearly explains the tool's purpose and output fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema_description_coverage is 100%. Per guidelines, baseline is 4. The description does not need to add parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), resource (webhook endpoints), and scope (active, for the organization). It is specific and distinguishes from sibling tools that perform different operations like createEndpoint or deleteEndpoint.
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 provide explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of prerequisites, limitations, or when not to use it. For a simple listing tool, this is adequate but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listFiltersList filtersARead-onlyIdempotentInspect
List all whitelist and blocklist filter rules for the organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations by specifying that it lists both whitelist and blocklist rules. Annotations already indicate readOnlyHint and destructiveHint, so the description complements them with specifics about the type of data returned.
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 with no unnecessary words. It is front-loaded and effectively conveys the tool's 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?
Given that the tool has no parameters and an output schema exists, the description is largely complete. However, it does not mention potential pagination or scope limitations (e.g., whether 'all' means all time or filtered), but this is minor for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description does not need to add meaning beyond the schema. The baseline score of 4 is appropriate as no parameter information is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists all whitelist and blocklist filter rules for the organization. This provides a specific verb ('list') and resource ('filter rules') and differentiates it from sibling tools like createFilter and deleteFilter.
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 provide guidance on when to use this tool versus alternatives. It lacks context about prerequisites, when not to use it, or how it relates to other filter-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listSentEmailsList sent emailsARead-onlyIdempotentInspect
List outbound emails sent by this org, with cursor pagination and filters. Bodies are omitted from list rows to keep responses small — use getSentEmail to fetch a specific row with full body. Useful for auditing delivery status, finding bounced sends, or checking gate-denied attempts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of sent emails to return (1–100, default 50). | |
| cursor | No | Pagination cursor from a previous response's `meta.cursor` field. | |
| status | No | Filter to rows in this status. Use "scheduled" to find pending scheduled sends (cancelable via cancelScheduledSend) and "canceled" for ones already canceled. | |
| date_to | No | Inclusive upper bound on created_at (ISO 8601). | |
| date_from | No | Inclusive lower bound on created_at (ISO 8601). | |
| request_id | No | Filter to the row matching a specific server-issued request_id from a /send-mail response. | |
| idempotency_key | No | Filter to rows with the given client idempotency key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool is safe. The description adds that bodies are omitted to keep responses small, which is a key behavioral trait beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, each with clear value: first sentence states purpose and key features, second sentence gives use cases and tool alternatives. No filler 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?
Despite 7 optional parameters and an output schema, the description covers all essential context: what the tool does, pagination behavior, body omission, and common use cases. Output schema is present, so return values need not be explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented. The tool description does not add additional meaning beyond summarizing the purpose of filters and pagination. 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 action (List), resource (outbound emails), and key features (cursor pagination and filters). It distinguishes itself from getSentEmail by noting that bodies are omitted. This provides a specific verb+resource scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (auditing delivery, finding bounced sends, checking gate-denied attempts) and directs users to getSentEmail for full email bodies. It does not list negative cases, but the positive guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listWebhookDeliveriesList webhook deliveriesARead-onlyIdempotentInspect
List webhook delivery attempts with pagination and filters. Each delivery includes the target endpoint and a nested email object with sender/recipient/subject. Useful for diagnosing delivery failures or confirming a specific email was delivered.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of delivery records to return (1–100, default 50). | |
| cursor | No | Pagination cursor from a previous response's `meta.cursor` field. | |
| status | No | Filter to deliveries in this status. | |
| date_to | No | Inclusive upper bound on attempted_at (ISO 8601). | |
| email_id | No | Filter by inbound email ID. | |
| date_from | No | Inclusive lower bound on attempted_at (ISO 8601). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds useful behavioral context by mentioning pagination, filters, and the structure of each delivery (endpoint and nested email object), which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core functionality, and includes a practical use case. Every word serves a purpose 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?
Given that the tool has an output schema (so return structure is not needed in description), strong annotations, and 6 optional parameters, the description covers the key aspects: purpose, what each delivery contains, and a primary use case. It is slightly lacking in explaining pagination details like the cursor usage, but the schema parameters already cover that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions 'pagination and filters' which vaguely relates to parameters, but it does not add specific parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List webhook delivery attempts') and the resource ('webhook deliveries'). It specifies pagination and filters, and distinguishes from siblings like listEmails or listEndpoints by focusing on delivery attempts with nested email objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('diagnosing delivery failures or confirming a specific email was delivered'), giving context for when to use the tool. However, it does not explicitly mention when not to use it or name alternative tools like replayWebhookDelivery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replayWebhookDeliveryReplay webhook deliveryAInspect
Re-send a stored webhook payload from a previous delivery attempt to its original endpoint. Rate limited per org (burst + sustained windows, shared budget with email webhook replays).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Delivery ID (numeric string from listWebhookDeliveries). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (no readOnlyHint, etc.), so the description carries the burden of behavioral disclosure. It adds the rate-limiting constraint, which is critical for an agent. However, it does not clarify potential side effects (e.g., idempotency is false but no mention of duplicates). Still, the added value is high.
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, front-loaded with purpose, followed by critical constraint. No unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description covers the purpose and a key behavioral constraint (rate limits). It does not mention error cases or prerequisites like payload availability, but these are implied. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter 'id', with a clear description in the schema. The tool description does not add any additional parameter-level information beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool re-sends a stored webhook payload to its original endpoint, distinguishing it from sibling tools like listWebhookDeliveries or testEndpoint. It uses specific language ('re-send', 'stored webhook payload', 'original endpoint').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by mentioning rate limits per org with burst and sustained windows and shared budget. It implies when to consider using this tool (with rate awareness), but does not explicitly list when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replyToEmailReply to emailADestructiveInspect
Use this when the user has selected a specific inbound email and confirmed a reply. Sends real outbound email with threading handled server-side.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Inbound email ID to reply to. Threading headers are set server-side. | |
| requestBody | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's destructive (destructiveHint=true). The description adds that it sends a real outbound email and handles threading server-side, but does not disclose other behaviors like response format or error handling. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the usage condition, no unnecessary words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested parameters, output schema exists), the description covers the main purpose and precondition. It lacks mention of what happens on error or how to obtain the id, but the schema and context signals fill some gaps. Slightly more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the tool description adds no parameter details. The schema descriptions for 'id' and 'requestBody' fields are thorough, compensating somewhat, but the tool description does not reiterate or enhance them. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'reply' and the resource 'inbound email', with specifics about sending a real outbound email and server-side threading. It distinguishes from siblings like sendEmail by indicating this is for replies to selected emails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use when the user has selected an inbound email and confirmed a reply, providing clear context. However, it does not mention when not to use or direct alternatives, missing a small opportunity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchEmailsSearch inbound emailsARead-onlyIdempotentInspect
Use this when you need to find inbound emails with structured filters or full-text matching. Use sort=received_at_asc plus date_from for new-mail polling.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Full-text query matched across subject, body, sender, and recipient. | |
| to | No | Filter to emails addressed to this recipient. | |
| body | No | Filter to emails whose body contains this string. | |
| from | No | Filter to emails from this sender address or domain. | |
| sort | No | Sort order. Use received_at_asc with date_from for polling new mail. | |
| limit | No | Maximum number of emails to return (1–100, default 50). | |
| cursor | No | Pagination cursor from a previous response's `meta.cursor` field. | |
| status | No | Filter to emails in this processing status. | |
| date_to | No | Inclusive upper bound on received_at (ISO 8601). | |
| snippet | No | Include a short body snippet in each result (default true). | true |
| subject | No | Filter to emails whose subject contains this string. | |
| date_from | No | Inclusive lower bound on received_at (ISO 8601). | |
| domain_id | No | Filter to emails received on a specific verified domain. | |
| spam_score_lt | No | Filter to emails with a spam score strictly below this value. | |
| has_attachment | No | Filter to emails that have ("true") or lack ("false") attachments. | |
| include_facets | No | Include aggregated facet counts (sender, domain, status) in the response (default true). | true |
| spam_score_gte | No | Filter to emails with a spam score at or above this value. | |
| reply_to_sent_email_id | No | Filter to inbound emails that are replies to a specific sent email ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description adds value by providing the polling pattern and indicating that the tool supports both structured filters and full-text matching. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first explains the tool's purpose and capabilities, the second provides a specific usage pattern. 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?
The tool has 18 parameters and an output schema, all documented. The description covers the main use case and polling pattern. It could mention pagination or default behavior, but overall it is sufficiently complete for a search 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?
With 100% schema description coverage, the baseline is 3. The description adds extra guidance on combining sort and date_from for polling, which is a valuable usage hint. This justifies a score of 4.
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 finds inbound emails with structured filters or full-text matching, distinguishing it from siblings like listEmails and getEmail. The specific verb 'search' and resource 'inbound emails' make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear when-to-use scenario and a specific polling pattern (sort=received_at_asc plus date_from). However, it does not explicitly mention alternatives or when not to use this tool, though the context of sibling tools implies simpler alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendEmailSend emailADestructiveInspect
Use this when the user has confirmed a new outbound email. Sends real email through Primitive's relay and can wait for the first SMTP delivery outcome, or schedule the send for a future time with scheduled_at.
| Name | Required | Description | Default |
|---|---|---|---|
| requestBody | Yes | ||
| Idempotency-Key | No | Client-supplied idempotency key. Retrying with the same key returns the original result without re-sending. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations: it mentions that the email is sent through a relay, can wait for delivery outcome, can be scheduled, and notes incompatibilities (wait and scheduled_at cannot be combined, attachments not allowed on scheduled sends). Annotations indicate destructiveHint=true and readOnlyHint=false, which is consistent. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the usage context and capabilities. Every sentence adds value, and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (17 parameters, nested objects, output schema) and 25+ siblings, the description provides high-level usage and constraints but omits important details like idempotency, domain verification, recipient limits, and when to use alternatives. It adequately covers the basic flow but lacks depth for nuanced decisions.
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 50% (only Idempotency-Key has a description at root level; requestBody lacks one). The tool description does not add meaning for individual parameters beyond mentioning scheduled_at and wait. It does not clarify that requestBody must contain from, to, and subject, or explain constraints like verified domain for from.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('sends') and resource ('real email'), and provides a specific usage condition ('when the user has confirmed a new outbound email'). It distinguishes from siblings like sendEmailDemo, replyToEmail, and listSentEmails by focusing on sending new outbound emails with real delivery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context: 'use this when the user has confirmed a new outbound email'. It mentions optional behaviors (waiting for SMTP outcome, scheduling) but does not explicitly state when not to use it or list alternatives. The sibling tool list exists but is not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendEmailDemoTry a send (no signup)ARead-onlyIdempotentInspect
Send a SIMULATED email with no account required. Validates the body against the exact same schema as sendEmail (including cc/bcc, reply_to, tags, attachments, and scheduled_at), then returns a realistic synthetic success envelope (demo: true); it never actually sends, queues, or stores anything. Demo requests are capped at 16KB total body, so large attachments are rejected even though the schema allows them. Use this to let someone try Primitive and see the response shape before they sign up. To send for real, sign up for an API key and use sendEmail.
| Name | Required | Description | Default |
|---|---|---|---|
| requestBody | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosures beyond annotations: body validation against same schema, synthetic response, 16KB limit, no actual sending, queuing, or storing. Description supports readOnlyHint and idempotentHint.
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 key constraints. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a demo tool with complex schema and output schema present. Describes purpose, usage, behavioral nuances, and links to real sendEmail.
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 0% at top level, but description mentions validation uses sendEmail schema, and adds 16KB total body cap. Does not detail individual parameters, relying on external schema knowledge. Adequate for demo tool.
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 sends a simulated email, validates against sendEmail schema, and returns a synthetic envelope. Distinguishes from sendEmail by emphasizing 'never actually sends' and mentions demo nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to let someone try Primitive' and 'To send for real, use sendEmail'. Provides clear when-to and when-not-to scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
testEndpointTest webhook endpointAInspect
Send a sample email.received event to a webhook endpoint to verify your signature verifier. Rate limited to 4/min and 30/hr. Successful deliveries and verified-domain endpoints are exempt.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Endpoint ID from listEndpoints or createEndpoint. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses rate limits (4/min, 30/hr) and exemption conditions beyond annotations. No contradiction with annotations; non-destructive nature is implied.
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 sentences front-loading the primary purpose, then adding rate limits and exemptions. 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?
Simple tool with 1 param and output schema; description covers purpose, rate limiting, and parameter source. Complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (id) fully described in schema. Description adds no extra semantics beyond the schema's 'Endpoint ID from listEndpoints or createEndpoint.' Schema coverage 100% justifies baseline 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?
Clearly states the tool sends a sample email.received event to test a webhook endpoint for verifying signature verifier. Differentiates from siblings like replayWebhookDelivery by specifying the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use (to verify signature verifier) and mentions rate limits and exemptions. Does not explicitly exclude other tools, but the purpose is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verifyDomainVerify domainAIdempotentInspect
Check DNS records for a domain claim (MX, TXT, SPF, DKIM, DMARC). On success the domain becomes verified and starts receiving mail. On failure, returns which checks passed and which still need attention. If DNS propagation is incomplete, wait a few minutes and retry.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Domain ID returned by addDomain or listDomains. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| tool | Yes | |
| status | Yes | |
| statusText | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, idempotentHint=true. The description adds context about DNS checks and propagation wait, and clarifies state change on success. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, no redundant information. Every sentence adds value: purpose, success/failure behavior, and retry guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter, full schema coverage, and an output schema (not shown), the description covers what happens on success and failure, and provides retry advice. It is sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'id' with full schema description (100% coverage) linking it to addDomain/listDomains. Tool description doesn't add extra parameter detail beyond what's in the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'check DNS records' and the resource 'domain claim', specifying the record types (MX, TXT, SPF, DKIM, DMARC). It distinguishes the tool from siblings like 'addDomain' by focusing on verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use after adding a domain and on failure to wait and retry. Explains outcome: verified domains start receiving mail. Doesn't explicitly state when not to use or contrast with siblings, but the context is clear enough.
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!
Related MCP Servers
- AlicenseAqualityDmaintenanceEmail infrastructure for AI agents — create inboxes, send/receive email, search messages, and manage threads via MCP tools.1082MIT
- Apache 2.0
- Alicense-qualityBmaintenanceConnects any IMAP/SMTP mailbox to AI agents via MCP, enabling email read, search, send, reply, and management through natural language.72MIT
- AlicenseAqualityDmaintenanceEnables AI agents to search, read, send, and organize Gmail emails via MCP protocol.221902MIT