Skip to main content
Glama

Server Details

Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.

Claim email

Claiming proves that you control this connector and unlocks listing details, thumbnails, health checks, and analytics. It does not change or interrupt the running server.

Complete one method below. Compare the methods and read troubleshooting steps.

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.3/5 across 29 of 29 tools scored. Lowest: 3.3/5.

Server CoherenceA
Disambiguation5/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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

30 tools
addDomainAdd 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestBodyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 replyA
Read-onlyIdempotent
Inspect

Wait for the threaded reply to a sent email. Call this immediately after sendEmail or replyToEmail when you expect an answer. With only the sent email's id it long-polls for up to 30 seconds by default. Do not report that nobody replied or ask the user to check later until this call returns with no reply. Set wait=false only for a deliberate immediate poll. Matching uses reply threading, not a sender or subject guess.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe sent email id to fetch the reply for (from a sendEmail/replyToEmail response).
waitNoWhen true, long-poll until a reply arrives or wait_timeout_ms elapses. Defaults to true. Set false only for a single immediate poll.
api_keyNoPrimitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in.
wait_timeout_msNoHow long to wait when wait=true (1000 to 30000 ms). Defaults to 30000.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior5/5

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 significant behavioral context beyond these: it explains the long-polling mechanism ('long-polls for up to 30 seconds by default'), the matching strategy ('uses reply threading, not a sender or subject guess'), and the expected return behavior ('returns with no reply'). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is six sentences, each earning its place. It front-loads the core purpose in the first sentence, then quickly covers usage advice, polling behavior, error handling instruction, and matching logic. There is no redundancy or unnecessary detail. The structure is logical and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, output schema present), the description covers all essential aspects: when to call, the polling mechanism, timeout behavior, error handling (do not report no reply prematurely), and how matching works. The presence of an output schema reduces the need to describe return values. The description is complete for an AI agent to use this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds minimal semantic value beyond the schema: it reiterates that 'id' comes from a sendEmail/replyToEmail response (already in schema) and notes that with only the id it long-polls by default. The 'wait' and 'wait_timeout_ms' parameters are adequately documented in the schema. The description does not significantly enhance parameter understanding, so a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the purpose: 'Wait for the threaded reply to a sent email.' It specifies the action (waiting), the resource (reply to a sent email), and even suggests when to call it (immediately after sendEmail or replyToEmail). This distinguishes it from all sibling tools, none of which are polling or waiting tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Call this immediately after sendEmail or replyToEmail when you expect an answer.' It tells the agent when not to use alternatives ('Do not report that nobody replied or ask the user to check later until this call returns with no reply') and gives specific advice for the 'wait' parameter ('Set wait=false only for a deliberate immediate poll'). This is comprehensive and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancelScheduledSendCancel scheduled sendA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSent email ID of the scheduled send, from a sendEmail response or listSentEmails.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

createEmailAddressGet a managed email domain (no signup)AInspect

Get this user's Primitive managed inbox domain, creating the account on first use: no signup form, no password, no email verification, no browser. CALL THIS FIRST whenever you do not already have a Primitive API key and the user wants to send or receive email, instead of telling them to sign up or visit a website. On first use the REST response's address field is a domain such as pink-ram.primitive.email, not a complete mailbox. When it is non-null, this MCP result also includes sender_address such as agent@pink-ram.primitive.email for use as sendEmail.requestBody.from. It also returns an api_key. IMPORTANT: pass that api_key as the api_key argument on every later Primitive tool call in this conversation, exactly as returned; those calls fail without it. If this user already has a domain, the result repeats it with existing_account: true. Report it as their existing managed inbox rather than announcing a new one, and calling again will not produce a different one. The result also carries an upgrade link the user can open whenever they want to attach this domain to a full account.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestBodyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint false), the description discloses key behaviors: creates on first use (mutation), returns api_key and sender_address, explains idempotency (existing_account flag), and warns that failing to pass the api_key later will cause failures. All critical for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly long but every sentence adds value. It is front-loaded with purpose, then usage, then result details, then important warnings. Slight redundancy in explaining the domain format could be tightened, but overall well-organized and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (1 parameter, nested, output schema present), the description fully covers the input context (terms_accepted must be true), the output structure (address, sender_address, api_key, existing_account, upgrade_link), idempotency, and critical api_key handling. Complete enough 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters (device_name, terms_accepted) with adequate detail. The tool description adds no further information about these parameters. Baseline 3 is appropriate since schema coverage is good and the description focuses on output and usage instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get this user's Primitive managed inbox domain, creating the account on first use.' It specifies the resource (managed inbox domain) and action (get/create), and distinguishes from siblings by calling it first when no API key exists. No other sibling tool has this role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use: 'CALL THIS FIRST whenever you do not already have a Primitive API key and the user wants to send or receive email, instead of telling them to sign up or visit a website.' Also warns against re-calling: 'calling again will not produce a different one.' Provides clear alternatives (signup/website) and context.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestBodyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestBodyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 endpointA
Destructive
Inspect

Soft-delete a webhook endpoint. The endpoint will no longer receive deliveries.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEndpoint ID from listEndpoints or createEndpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 filterA
Destructive
Inspect

Delete a filter rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFilter rule ID from listFilters or createFilter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 fileA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID from listDomains or addDomain.
outbound_onlyNoWhen true, include only outbound DNS records (SPF, DKIM, DMARC). Defaults to all records for unverified domains, outbound-only for verified.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 attachmentsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInbound email ID.
tokenNoSigned download token from a webhook payload. Optional — the bearer token is used when this is omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 accountA
Read-onlyIdempotent
Inspect

Use this when you need the authenticated Primitive account summary, including plan, onboarding state, and managed inbox domain. managed_inbox_address is a domain, not a complete mailbox. When it is non-null, this MCP result also includes sender_address, such as agent@pink-ram.primitive.email, for use as sendEmail.requestBody.from.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNoPrimitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint, idempotentHint, and destructiveHint false, consistent with a read operation. The description adds useful detail about the managed_inbox_address field being a domain (not a mailbox) and clarifies that when non-null, the result includes sender_address. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, efficiently conveying purpose and key details about return fields. It is front-loaded with the primary use case. Minor redundancy in explaining managed_inbox_address could be condensed, but overall concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 (which handles return value details), the description adequately covers purpose, parameter usage nuance, and a specific field behavior. No obvious gaps for this simple read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining how the api_key parameter is conditionally required ('Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress...'), which aids correct invocation beyond schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the authenticated Primitive account summary, listing specific fields (plan, onboarding state, managed inbox domain). It distinguishes itself from siblings by focusing on account-level information rather than email operations or domain management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies when to use the tool ('when you need the authenticated Primitive account summary'). However, it does not explicitly state when not to use it or mention alternative tools for similar data, though context suggests it is unique among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getConversationGet conversationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of any inbound email in the conversation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 emailA
Read-onlyIdempotent
Inspect

Use this when you need full details for one inbound email ID, including parsed bodies, threading metadata, SMTP envelope, webhook state, and replies.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInbound email ID from listEmails or searchEmails.
api_keyNoPrimitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe, idempotent read. The description adds context about returned content but does not disclose additional behavioral traits such as rate limits, failure modes, or authentication prerequisites beyond what the api_key parameter description already explains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the trigger condition and then lists the included data categories. It is concise with no wasted words, each part contributing to the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values are already documented. The description covers the core purpose and content, and parameters are fully described in the schema. It could mention alternatives like getConversation or getThread, but overall it is sufficient for a well-annotated read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both id and api_key have detailed descriptions explaining provenance and usage. The tool description itself does not add parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('get full details') and the resource ('one inbound email ID'), enumerating the included data categories (parsed bodies, threading metadata, SMTP envelope, webhook state, replies). This makes it distinct from sibling tools like getConversation or getSentEmail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description opens with 'Use this when you need full details for one inbound email ID,' providing explicit context for when to invoke the tool. It does not name alternative tools or exclusions, but the 'when' phrasing is clear enough to guide selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getInboxStatusGet inbox statusA
Read-onlyIdempotent
Inspect

Use this when the user asks whether inbound email is ready or needs setup. Returns domains, routes, deployed Functions, and recent inbound activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNoPrimitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds value by specifying the exact read outputs (domains, routes, deployed Functions, recent inbound activity), making the scope transparent. No contradictions; could optionally mention auth caveats, but the schema covers api_key semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each earning its place: first states the trigger condition, second enumerates the return payload. No filler, front-loaded with the use case. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple single-parameter tool with an output schema present, the description covers the functional context (inbound readiness check) and return categories. Since an output schema exists, it needn't detail exact fields. Complete and appropriately scoped.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, including detailed guidance on when to include api_key ('Only needed when this connection has no signed-in account...'). The description adds no parameter-level detail, but the schema fully compensates, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool's 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 inbound activity), distinguishing it from siblings like getOutboundStatus by focusing on inbound readiness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives a when-to-use trigger: 'when the user asks whether inbound email is ready or needs setup.' It does not list exclusions or alternative tools directly, but the specific use case provides clear context relative to siblings. Lacks an explicit 'instead of' alternative, hence not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getOutboundStatusGet outbound statusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 emailA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSent email ID from listSentEmails or a /send-mail response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 threadA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThread ID from the thread_id field on any email or sent-email.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 domainsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 emailsA
Read-onlyIdempotent
Inspect

Use this when you need to browse inbound emails received at verified domains with cursor pagination, status filters, date filters, or sender/recipient search.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoLong-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.
limitNoMaximum number of emails to return (1–100, default 50).
sinceNoForward-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`.
cursorNoBackward (history) pagination cursor from a previous response's `meta.cursor` field: returns emails OLDER than this position, newest-first. Mutually exclusive with `since`.
searchNoFree-text search across sender, recipient, and subject.
statusNoFilter to emails in this processing status.
api_keyNoPrimitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in.
date_toNoInclusive upper bound on created_at (ISO 8601).
date_fromNoInclusive lower bound on created_at (ISO 8601).
domain_idNoFilter to emails received on a specific verified domain.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing the safety profile. The description adds limited behavioral context by mentioning cursor pagination, status filters, date filters, and sender/recipient search, but these are already evident from the parameter schema. It does not disclose additional behaviors like long-polling behavior, which is documented in the schema but not the description. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that immediately states the use case and lists capabilities. It contains no fluff, repetitive phrasing, or unnecessary details. Every word contributes to orienting the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, output schema present), the description is succinct yet sufficient. It captures the primary use case and key capabilities, while the rich schema and output schema cover operational details like cursor formats, date formats, and return structure. However, it could briefly mention pagination strategy or distinguish between `since` and `cursor`, though those are documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter has a detailed description. The tool description provides a high-level summary of filtering dimensions (status, date, sender/recipient) but does not add meaning beyond the schema. It correctly aggregates parameter groups but does not explain syntax, relationships, or edge cases beyond what the schema already covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's function: browsing inbound emails received at verified domains. It specifies the resource ('inbound emails'), the scope ('received at verified domains'), and enumerates key capabilities (cursor pagination, status filters, date filters, sender/recipient search). This differentiates it from siblings like listSentEmails, getEmail, and searchEmails by clarifying it is for listing/browsing inbound mail with filter options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description begins with 'Use this when you need to browse inbound emails...', providing an explicit use case. It implies this is the tool for browsing/filtering inbound mail rather than searching or retrieving individual emails. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listEndpointsList webhook endpointsA
Read-onlyIdempotent
Inspect

List all active webhook endpoints for the organization. Each endpoint shows its URL, enabled state, and optional domain restriction.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 filtersA
Read-onlyIdempotent
Inspect

List all whitelist and blocklist filter rules for the organization.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 emailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of sent emails to return (1–100, default 50).
cursorNoPagination cursor from a previous response's `meta.cursor` field.
statusNoFilter to rows in this status. Use "scheduled" to find pending scheduled sends (cancelable via cancelScheduledSend) and "canceled" for ones already canceled.
date_toNoInclusive upper bound on created_at (ISO 8601).
date_fromNoInclusive lower bound on created_at (ISO 8601).
request_idNoFilter to the row matching a specific server-issued request_id from a /send-mail response.
idempotency_keyNoFilter to rows with the given client idempotency key.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 deliveriesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of delivery records to return (1–100, default 50).
cursorNoPagination cursor from a previous response's `meta.cursor` field.
statusNoFilter to deliveries in this status.
date_toNoInclusive upper bound on attempted_at (ISO 8601).
email_idNoFilter by inbound email ID.
date_fromNoInclusive lower bound on attempted_at (ISO 8601).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDelivery ID (numeric string from listWebhookDeliveries).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 emailA
Destructive
Inspect

Use this when the user has selected a specific inbound email and confirmed a reply. Sends real outbound email with threading handled server-side.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInbound email ID to reply to. Threading headers are set server-side.
api_keyNoPrimitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in.
requestBodyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey a write/non-read-only, destructive, non-idempotent, open-world action. The description adds meaningful context by stating it sends a real outbound email (external side effect) and that threading is handled server-side. It also mentions a user-confirmation prerequisite, which is a useful behavioral guardrail. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tight sentence that is front-loaded with the trigger condition and states the key side effect/behavior. No filler or repetitive content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a rich schema and annotations, the description covers the essential selection context (selected inbound email, confirmed reply, real sending, server-side threading) and works with the annotation flags. Since an output schema exists, return details are not required. It could mention auth prerequisites more explicitly, but the api_key parameter description covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description contains no parameter-specific explanations; it does not mention id, requestBody, api_key, body fields, or attachments. The schema already describes most parameters (67% coverage, with requestBody itself lacking a description), and the description does not compensate for that gap or add any additional parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('reply') and identifies a precise resource/context: a specific inbound email the user has selected and confirmed. It distinguishes the action from siblings by stating this is for replies to inbound email, not new mail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use: when the user has selected a specific inbound email and confirmed a reply. It does not, however, name alternative tools (e.g., sendEmail) or provide explicit 'do not use' conditions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

searchEmailsSearch inbound emailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text query matched across subject, body, sender, and recipient.
toNoFilter to emails addressed to this recipient.
bodyNoFilter to emails whose body contains this string.
fromNoFilter to emails from this sender address or domain.
sortNoSort order. Use received_at_asc with date_from for polling new mail.
limitNoMaximum number of emails to return (1–100, default 50).
cursorNoPagination cursor from a previous response's `meta.cursor` field.
statusNoFilter to emails in this processing status.
date_toNoInclusive upper bound on received_at (ISO 8601).
snippetNoInclude a short body snippet in each result (default true).true
subjectNoFilter to emails whose subject contains this string.
date_fromNoInclusive lower bound on received_at (ISO 8601).
domain_idNoFilter to emails received on a specific verified domain.
spam_score_ltNoFilter to emails with a spam score strictly below this value.
has_attachmentNoFilter to emails that have ("true") or lack ("false") attachments.
include_facetsNoInclude aggregated facet counts (sender, domain, status) in the response (default true).true
spam_score_gteNoFilter to emails with a spam score at or above this value.
reply_to_sent_email_idNoFilter to inbound emails that are replies to a specific sent email ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 emailA
Destructive
Inspect

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. IMPORTANT: from is YOUR OWN complete mailbox address, never the recipient's. Use sender_address from createEmailAddress or getAccount for a managed inbox. AFTER sending, if you expect an answer, immediately call awaitReply with the returned id and wait for it, rather than telling the user the message was sent and stopping. Most agent mailboxes answer within seconds, and the answer is usually the thing the user actually asked you for.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNoPrimitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in.
requestBodyYes
Idempotency-KeyNoClient-supplied idempotency key. Retrying with the same key returns the original result without re-sending.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true, and the description reinforces that by stating 'sends real email.' It adds behavioral details: can wait for SMTP delivery outcome, schedule send, and warns about `from` misuse. It mentions the post-send awaitReply step. Missing details like rate limits or cancellation behavior are partially covered by sibling tools, and annotations provide the base safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact: three sentences each serving a distinct purpose (usage trigger, core behavior, critical instruction and post-send action). It is front-loaded with the use case, and every sentence adds necessary information without redundancy. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (nested schema, many parameters, output schema present), the description covers the essential workflow: when to use, what it does, the critical `from` rule, and the post-send step with awaitReply. It references sibling tools for setup (createEmailAddress) and follow-up (awaitReply). The output schema exists, so the lack of return value details is acceptable. Minor gap: no mention of error states or the Idempotency-Key behavior, but these are covered in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema itself has a high level of detail (67% coverage) with descriptions for most parameters. The main description adds value for the `from` parameter ('YOUR OWN complete mailbox address, never the recipient's') and references sender_address from createEmailAddress/getAccount. However, it does not explain other key parameters like to, subject, attachments, or the interplay between wait and scheduled_at beyond a brief mention. The schema does the heavy lifting, so the description's additional semantic contribution is modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it sends real email through Primitive's relay, with options to wait or schedule. It specifies it is for new outbound emails only, distinguishing it from siblings like replyToEmail (replies) and sendEmailDemo (demo). The verb 'sends' plus resource 'email' with explicit scope is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this when the user has confirmed a new outbound email,' providing clear when-to-use context. It adds critical guidance: the `from` field must be your own address, and after sending, call awaitReply if expecting an answer. It does not explicitly exclude sibling tools for other scenarios (e.g., replying), but the narrowing to 'new outbound' is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sendEmailDemoPreview a send (simulated, nothing is delivered)A
Read-onlyIdempotent
Inspect

SIMULATION ONLY: nothing is delivered. NEVER call this when the user actually wants an email to arrive, and never describe its result as a sent email: no message is sent, queued, or stored, and the recipient receives nothing. To really send with no account, call createEmailAddress (instant, no signup form and no verification) and then sendEmail with the api_key it returns; that is the correct path for any genuine send request. This tool exists only to preview the response shape: it validates the body against the exact same schema as sendEmail (including cc/bcc, reply_to, tags, attachments, and scheduled_at) and returns a synthetic success envelope marked demo: true. Demo requests are capped at 16KB total body, so large attachments are rejected even though the schema allows them.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestBodyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint and idempotentHint and destructiveHint=false, but the description adds significant behavioral details: no message is sent, queued, or stored; recipient receives nothing; validates against the exact sendEmail schema; returns an envelope with demo:true; and enforces a 16KB total body cap. All this context is beyond what annotations provide and is consistent with them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately lengthy but every sentence adds value: simulation warning, when-not-to-use, alternative tool path, validation coverage, size limit. It is front-loaded with the critical simulation warning and well-structured. Could trim slightly but is effectively composed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (nested object parameter, many fields, output schema exists), the description covers purpose, usage constraints, behavioral details, and size limits. It refers to the output schema implicitly by describing the synthetic envelope. The presence of an output schema reduces the need to describe return values in detail, so the description is complete for an agent to correctly select and invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description provides meaningful context about the requestBody parameter: it validates against the sendEmail schema (including cc/bcc, reply_to, tags, attachments, scheduled_at) and has a 16KB total body limit that can reject large attachments. This adds practical constraints not captured in the schema alone, earning a score above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is a simulation that previews a send by validating the request body against the same schema as sendEmail and returning a synthetic envelope with demo:true. It explicitly distinguishes from the actual sendEmail tool and provides the correct alternative using createEmailAddress and sendEmail. Scope and resource are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly warns when NOT to use this tool (when the user wants an email delivered) and provides the correct alternative path (createEmailAddress then sendEmail). It also clarifies that the tool exists only to preview the response shape, giving clear context for appropriate invocation.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEndpoint ID from listEndpoints or createEndpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 domainA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID returned by addDomain or listDomains.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes
statusYes
statusTextNo
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources