sendhustle-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sendhustle-mcpsend an email to my contacts about the upcoming webinar"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sendhustle-mcp
The official SendHustle MCP server. It gives your AI agent native access to the SendHustle email API over the Model Context Protocol — send and manage emails, domains, contacts, audiences, and campaigns using natural language.
Supports both stdio (default) and HTTP (Streamable HTTP) transports, and runs with npx in any MCP client.
Install
No install needed — run it on demand with npx:
npx -y sendhustle-mcpPrerequisites
Create an API key (looks like
sh_xxxxxxxxx).Verify a domain to send from.
Related MCP server: Inbound Email MCP Server
Configuration
Set your API key via the SENDHUSTLE_API_KEY environment variable. Add the server to your MCP client of choice:
Claude Code
claude mcp add sendhustle -e SENDHUSTLE_API_KEY=sh_xxxxxxxxx -- npx -y sendhustle-mcpCodex
codex mcp add sendhustle --env SENDHUSTLE_API_KEY=sh_xxxxxxxxx -- npx -y sendhustle-mcpCursor / Claude Desktop / Windsurf / Gemini CLI
{
"mcpServers": {
"sendhustle": {
"command": "npx",
"args": ["-y", "sendhustle-mcp"],
"env": {
"SENDHUSTLE_API_KEY": "sh_xxxxxxxxx"
}
}
}
}VS Code Copilot
Add to your VS Code settings.json:
{
"mcp": {
"servers": {
"sendhustle": {
"command": "npx",
"args": ["-y", "sendhustle-mcp"],
"env": { "SENDHUSTLE_API_KEY": "sh_xxxxxxxxx" }
}
}
}
}OpenCode
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sendhustle": {
"type": "local",
"command": ["npx", "-y", "sendhustle-mcp"],
"enabled": true,
"environment": { "SENDHUSTLE_API_KEY": "sh_xxxxxxxxx" }
}
}
}HTTP transport
Run the server over HTTP for remote or web-based integrations. In HTTP mode, each client authenticates by passing its SendHustle API key as a Bearer token.
npx -y sendhustle-mcp --http --port 3000The server listens on http://127.0.0.1:3000 and exposes the MCP endpoint at POST /mcp (one JSON-RPC request per POST). You can also set the port with MCP_PORT.
claude mcp add sendhustle --transport http http://127.0.0.1:3000/mcp \
--header "Authorization: Bearer sh_xxxxxxxxx"{
"mcpServers": {
"sendhustle": {
"url": "http://127.0.0.1:3000/mcp",
"headers": { "Authorization": "Bearer sh_xxxxxxxxx" }
}
}
}Options
Flag | Description |
| Use Streamable HTTP transport instead of stdio (default: stdio). |
| HTTP port when using |
| SendHustle API key (stdio mode; HTTP mode uses the client Bearer token). |
| Default sender address from a verified domain. |
| Default reply-to address (repeatable). |
| Show usage and the tool list. |
| Print the version. |
Environment variables
Variable | Description |
| Your API key. Required for stdio; optional for HTTP (clients pass it via Bearer token). |
| API base URL (default: |
| Default sender address from a verified domain (optional). |
| Comma-separated default reply-to addresses (optional). |
| HTTP port when using |
If you do not provide a sender, the send_email and create_campaign tools require a from argument on each call.
Tools
The server exposes 79 tools covering the full SendHustle API.
Emails
Tool | Description |
| Send a single email (HTML/text, CC/BCC, reply-to, scheduling, attachments, tags, idempotency key). |
| Send up to 100 emails in one request. |
| Retrieve a sent email and its events by id. |
| List sent emails with cursor pagination. |
| Reschedule a scheduled email. |
| Cancel a scheduled email before it sends. |
| List a sent email's attachments. |
| Retrieve metadata + download URL for one attachment. |
Received (inbound) emails
Tool | Description |
| List inbound emails. |
| Retrieve a received email by id. |
| Forward a received email to other recipients. |
Domains
Tool | Description |
| Create a sender domain (returns DNS records to add). |
| List sender domains. |
| Retrieve a domain and its DNS/verification status. |
| Update tracking / TLS / capabilities settings. |
| Trigger domain verification. |
| Delete a domain. |
| Claim a domain verified elsewhere. |
Audiences
Tool | Description |
| Create an audience (a named contact list). |
| List audiences. |
| Retrieve an audience by id. |
| Delete an audience and its contacts. |
Contacts
Tool | Description |
| Create a contact within an audience. |
| List contacts in an audience. |
| Retrieve a contact by id or email. |
| Update a contact by id or email. |
| Delete a contact. |
| Add a contact to a segment. |
| Remove a contact from a segment. |
| Get a contact's topic subscriptions. |
| Update a contact's topic subscriptions. |
Contact properties
Tool | Description |
| Create a custom contact property / merge tag. |
| List contact properties. |
| Retrieve a contact property by id. |
| Update a contact property's fallback value. |
| Delete a contact property. |
Segments
Tool | Description |
| Create a saved filter over an audience. |
| List segments. |
| Retrieve a segment by id. |
| Preview the contacts a segment resolves to. |
| Update a segment's name or filter. |
| Delete a segment. |
Topics
Tool | Description |
| Create a subscription topic. |
| List topics. |
| Retrieve a topic by id. |
| Update a topic. |
| Delete a topic. |
Campaigns
Tool | Description |
| Create a campaign. |
| Send a campaign now, or schedule it. |
| Retrieve a campaign by id. |
| List campaigns. |
| Update a draft campaign's content/targeting. |
| Cancel a scheduled campaign (return to draft). |
| Delete a campaign. |
Templates
Tool | Description |
| Create a reusable email template. |
| List templates. |
| Retrieve a template by id. |
| Update a template. |
| Duplicate a template. |
| Publish a template's latest draft. |
| Delete a template. |
Automations
Tool | Description |
| Create an automation (optionally with an inline step graph). |
| List automations. |
| Retrieve an automation and its step graph. |
| Append a step to an automation. |
| List an automation's runs. |
| Stop an automation (no new runs). |
| Delete an automation. |
Webhooks
Tool | Description |
| Create a webhook endpoint (signing secret returned once). |
| List webhooks. |
| Retrieve a webhook by id. |
| Update a webhook's endpoint/events/status. |
| Delete a webhook. |
Logs, events & API keys
Tool | Description |
| List API request logs. |
| Retrieve a single log entry with request/response bodies. |
| Send a custom event automations can trigger on. |
| Create an API key (token returned once). |
| List API keys. |
| Delete (revoke) an API key. |
Local development
git clone https://github.com/Achlesha/SendHustle.git
cd SendHustle/packages/sendhustle-mcp
npm install
npm run build
npm testThen point your client at the built entry file:
claude mcp add sendhustle -e SENDHUSTLE_API_KEY=sh_xxxxxxxxx -- node /ABSOLUTE/PATH/dist/cli.jsTesting with MCP Inspector
export SENDHUSTLE_API_KEY=mb_your_key_here
npm run inspectorLicense
MIT
Available Tools
111 toolsadd_automation_stepA
Append a step to an automation (POST /automations/:id/steps).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. | |
| key | No | Optional step key for referencing in connections. | |
| type | Yes | Step type, e.g. 'send_email', 'wait', 'condition'. | |
| config | No | Step configuration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that a step is appended and includes the POST endpoint, but does not mention prerequisites like an existing automation, validation of type/config, response behavior, or auth requirements. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the action and including the endpoint for clarity. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple append operation, the description and fully documented schema are mostly adequate. However, without an output schema or annotations, it omits what response is returned and any constraints on valid step types/configurations, leaving the agent with some ambiguity about expected behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema documentation covers 100% of the parameters, so the baseline is 3. The description itself adds no parameter details beyond the endpoint's id path, but the schema already documents id, key, type, and config sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Append'), a resource ('a step'), and a target ('an automation'), reinforced by the endpoint. It clearly distinguishes from sibling tools like update_automation_step and delete_automation_step because it signals an add-at-the-end operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by 'Append a step to an automation', but the description gives no explicit when-to-use guidance or alternatives. It does not mention that update_automation_step should be used to modify an existing step or delete_automation_step to remove one, leaving the agent to infer routing from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_contact_to_segmentA
Add a contact to a segment (POST /contacts/:id/segments/:segmentId).
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact id. | |
| segment_id | Yes | The segment id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action and POST endpoint but does not mention idempotency, duplicate handling, permission requirements, validation errors, or what the response indicates. This leaves significant behavioral ambiguity for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It conveys the core action and the endpoint efficiently, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description plus fully documented schema is minimally sufficient. However, with no output schema and no annotations, it lacks practical context such as whether adding an existing membership errors or is a no-op, and what a successful response contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters have clear descriptions ('The contact id.' and 'The segment id.'). The tool description adds no additional parameter meaning, but the schema already provides sufficient semantics for a straightforward two-parameter operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Add a contact to a segment.' It unambiguously identifies the action and clearly differentiates from the sibling remove_contact_from_segment, which is the inverse operation. The HTTP endpoint further confirms the intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: to associate an existing contact with an existing segment. However, it does not explicitly state prerequisites, exclude alternatives, or mention behavior when the contact is already in the segment. The usage context is clear but not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_domain_dns_cloudflareA
Apply a domain's DNS records via the Cloudflare API, then auto-verify (POST /domains/:id/dns/cloudflare). Requires a scoped Zone.DNS:Edit token.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. | |
| token | Yes | A Cloudflare API token with Zone.DNS:Edit on this domain. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that the operation applies DNS records and triggers auto-verification, and it states the required token scope. However, it does not say whether this overwrites existing DNS records, whether it is reversible, or what happens on verification failure—important context for a mutating call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the action, the endpoint, the verification step, and the credential requirement. Every clause earns its place, and the key verb and provider are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description is largely complete: it states what happens, which API is used, and what credential is required. It does not describe the success or failure response, but given the lack of an output schema and the simplicity of the operation, this is a minor gap rather than a blocking omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters already well-documented in the schema. The description mostly repeats the token scope already present in the schema and does not add meaningful new semantic detail about the parameters beyond endpoint context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Apply a domain's DNS records'), the mechanism ('via the Cloudflare API'), and the follow-up behavior ('then auto-verify'). It also names the exact endpoint, and by specifying Cloudflare it distinguishes this tool from the sibling apply_domain_dns_godaddy and apply_domain_dns_namecheap tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when the tool is appropriate by explicitly naming Cloudflare and requiring a Cloudflare token, which differentiates it from the GoDaddy/Namecheap sibling apply tools. It does not explicitly state 'use this instead of the others when the domain uses Cloudflare,' but the provider-specific framing makes the intended context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_domain_dns_godaddyB
Apply a domain's DNS records via the GoDaddy API, then auto-verify (POST /domains/:id/dns/godaddy).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. | |
| key | Yes | GoDaddy API key (Production). | |
| secret | Yes | GoDaddy API secret. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the tool performs an API call and then 'auto-verifies' the result, which is useful. However, it does not mention side effects (e.g., whether existing DNS records are overwritten), authentication requirements beyond the key/secret parameters, or potential failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the primary action and includes the endpoint for clarity. It is efficient and contains no filler, though it could arguably omit the endpoint and still be clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema and no annotations, the description is adequate but not complete. It tells the agent what the tool does and the endpoint, but it does not explain what 'auto-verify' means in terms of return values, what happens on failure, or whether the operation is destructive to existing DNS records. Given the tool's moderate complexity, more context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (id, key, secret). The description adds no additional meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Apply a domain's DNS records via the GoDaddy API') and includes the endpoint ('POST /domains/:id/dns/godaddy'), which clearly identifies the resource and operation. It does not explicitly differentiate from sibling tools like apply_domain_dns_cloudflare or apply_domain_dns_namecheap, but the provider name in the tool name and description makes the distinction clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a domain's DNS records need to be applied through GoDaddy, and the sibling names (apply_domain_dns_cloudflare, apply_domain_dns_namecheap) suggest provider-specific alternatives. However, there is no explicit guidance on when to choose this over the alternatives, nor any mention of prerequisites like domain ownership or prior DNS detection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_domain_dns_namecheapA
Apply a domain's DNS records via the Namecheap API, then auto-verify (POST /domains/:id/dns/namecheap). Namecheap requires the calling server's IP to be whitelisted on the account.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. | |
| apiKey | Yes | Namecheap API key. | |
| apiUser | Yes | Namecheap API user. | |
| userName | No | Optional Namecheap username (defaults to apiUser). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose a key behavioral requirement (calling server's IP must be whitelisted) and the auto-verify step, but it does not explain side effects on existing DNS records, error behavior, or what the verification outcome looks like. Adds some value but leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry all essential information: the action, the endpoint, and a critical prerequisite. No filler, clear front-loading, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a mutation with no annotations and no output schema, so more explanation is needed. The description covers the core apply-and-verify flow and the IP whitelist prerequisite, but omits outcomes (e.g., whether records are overwritten), failure modes, and the response content. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add any additional meaning to the parameters; it mentions the API context but does not clarify how apiUser, apiKey, or userName are consumed beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Apply') and resource ('domain's DNS records'), names the API provider (Namecheap), and includes the exact endpoint. This clearly distinguishes it from sibling tools like apply_domain_dns_cloudflare and apply_domain_dns_godaddy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for Namecheap-managed domains by stating 'via the Namecheap API', but it does not explicitly state when to use it over alternatives or mention the other apply_domain_dns_* tools. Usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_campaignA
Cancel a scheduled campaign, returning it to draft (POST /campaigns/:id/cancel).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The campaign id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It clearly discloses the state transition (scheduled → draft), which is useful. However, it does not mention whether cancellation is idempotent, what happens if the campaign is already sent or already in draft, or any authorization/rate-limit considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that packs the action, the state transition, and the endpoint. No filler words, and the most important information (cancel + return to draft) appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with a clear state-transition behavior, the description is mostly complete. Gaps: it does not clarify return value/response or edge cases (e.g., can a sent campaign be canceled? is cancel only for scheduled ones?). These are minor for a single-id mutation but worth noting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the only parameter, id, is described as 'The campaign id.'), so the schema already documents the parameter. The description adds no additional meaning about the id (e.g., format) but no compensation is needed given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cancel), resource (scheduled campaign), and outcome (returning it to draft), plus the exact HTTP endpoint. This distinguishes it clearly from sibling tools like update_campaign or delete_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for scheduled campaigns that should be reverted to draft, which gives clear context. It does not explicitly name alternatives or when not to use it, but the 'scheduled' qualifier and the 'returning it to draft' behavior make the intended usage fairly unambiguous relative to delete_campaign.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_emailA
Cancel a scheduled email before it sends (POST /emails/:id/cancel).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The email id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method and the cancel-before-send behavior, but it does not explain what happens if the email has already been sent, whether the operation is idempotent, or what response to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence contains the action, the timing constraint, and the endpoint. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter cancellation tool with no output schema, the description is nearly complete. The main missing piece is an explicit failure case, such as attempting to cancel an already-sent email, but the core operation and input are fully specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single 'id' parameter with 100% coverage. The endpoint's ':id' confirms it is a path parameter, but the description adds little meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Cancel'), a specific resource ('a scheduled email'), and the exact endpoint. The 'before it sends' qualifier makes the tool's scope clear and helps distinguish it from cancel_campaign and other email-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before it sends' gives a clear timing condition that tells an agent when this tool is appropriate. It does not explicitly name alternatives or exclusions, but the single-action nature of the tool makes the usage context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_domain_mxA
MX preflight for a hostname before enabling receiving (GET /domains/mx-check). Returns { has_mx, ours, records } — whether the hostname already has MX records and whether they all point at our inbound host.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The hostname to check, e.g. mail.example.com. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It reveals that the tool performs a read-only DNS/MX inspection via GET, and precisely explains the returned fields and their meaning. It does not cover error cases or permissions, but for a simple preflight check the disclosure is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and immediately deliver the endpoint and return shape. Every sentence earns its place: the first states the action and timing, the second specifies the response contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only check with no output schema, the description is complete: it states what it checks, when to use it, and exactly what the response contains. No critical missing context would prevent an agent from selecting or invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage by describing 'name' as the hostname to check with an example. The description reinforces that the hostname is the subject of the MX preflight but adds no significant format or constraints beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: checking MX records for a hostname as a preflight step before enabling receiving. It also includes the HTTP endpoint (GET /domains/mx-check), which makes the tool's function unmistakable and distinct from the many domain and email siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use the tool: as an MX preflight check before enabling receiving. It does not explicitly name alternatives or exclusion conditions, but the usage context is specific enough that an agent can determine applicability without further inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_domainA
Claim a domain already verified elsewhere (POST /domains/claim). Returns a TXT record to add.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The domain name to claim. | |
| region | No | Optional sending region. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does state that this is a POST request and that it returns a TXT record to add, which is meaningful. However, it does not disclose side effects, whether the claim creates a pending state, authentication requirements, or what happens after the TXT record is added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence. It front-loads the core purpose, then adds the endpoint and return value, with no wasted words or redundant restatements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description is nearly complete: it explains the action, the endpoint, and the return value. It could be improved by noting the natural next step with verify_domain_claim or get_domain_claim, but that is not necessary to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both parameters ('name' and 'region'). The description adds no additional parameter-level meaning beyond what the schema provides, keeping this at the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Claim'), a clear resource ('a domain already verified elsewhere'), and includes the HTTP endpoint. It differentiates this from sibling tools like verify_domain by explicitly scoping to domains that have already been verified elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'already verified elsewhere' gives clear situational context for when to use this tool. It does not explicitly name alternatives or exclusions, such as using verify_domain when the domain is not verified elsewhere, but the context is strong enough for an agent to infer the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_api_keyA
Create an API key (POST /api-keys). The token is returned ONCE. permission is 'full_access' or 'sending_access'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A label for the key. | |
| domain_id | No | Scope a sending_access key to one domain. | |
| permission | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It adds one valuable fact: 'The token is returned ONCE,' warning that the key cannot be retrieved later. However, it does not explain the security consequences of full_access versus sending_access, whether the key is immediately active, or any permission prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core action, followed by the critical one-time-token caveat. The permission sentence is somewhat redundant with the schema enum, but it does not add significant clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool the description covers the essential one-time-token behavior, but with no output schema and no annotations it leaves gaps: it does not describe the response shape, the semantics of the two permission levels, or any post-creation behavior. An agent can call it correctly but may not understand which permission to choose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mostly repeats information already in the schema: permission's enum values are already visible, and name and domain_id already have descriptions. It adds no meaning about what full_access versus sending_access actually allows, nor does it clarify how domain_id interacts with permission beyond the schema's existing note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Create an API key (POST /api-keys).' This clearly differentiates it from sibling tools like list_api_keys and delete_api_key, so an agent can identify its purpose without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Create' implies when to use the tool, but the description gives no explicit guidance on choosing it over alternatives, nor does it mention when not to use it. It also does not clarify whether permission is optional or what the default behavior is, leaving some usage nuance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_audienceA
Create an audience — a named list of contacts (POST /audiences).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Audience name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It discloses the operation (create) and the HTTP method (POST), but does not mention side effects, duplicate handling, authentication needs, or what happens on success or failure. Adequate for a simple creation, but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. It front-loads the core action and resource, then adds one useful clarifying detail (named list of contacts) and the endpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter creation tool with no nested objects and no output schema, the description plus the input schema is largely sufficient to invoke it correctly. It could mention the expected response or uniqueness constraints, but these are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter, 'name', is already described as 'Audience name.' The description adds no additional parameter meaning beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Create an audience'), defines the resource as 'a named list of contacts', and includes the endpoint. This clearly distinguishes it from sibling create tools like create_segment or create_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as create_segment or import_contacts_batch. The purpose implies it is for creating an audience, but there are no explicit conditions, exclusions, or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_automationA
Create an automation triggered by an event (POST /automations). Every automation belongs to one sending domain — only send_event calls with the same domain trigger it. Optionally pass an inline step graph (steps + connections).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Automation name. | |
| steps | No | Optional inline steps; each { key?, type, config? }. | |
| domain | Yes | The sending domain this automation belongs to (one of the account's domains, e.g. 'yourdomain.com'). Required. | |
| status | No | Initial status (default 'disabled'). | |
| trigger | No | The event that starts a run: 'contact.created', an engagement event ('email.opened' | 'email.clicked' | 'email.replied' | 'email.bounced' | 'email.delivered'), or any custom event name (usually given as a steps[0] trigger step instead). | |
| connections | No | Optional typed edges between step keys; each { from, to, type? }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, and it does add useful specifics: POST /automations, domain-scoped triggering, and the inline steps/connections option. It stops short of stating permissions, idempotency, or the success response, so coverage is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler; the operation and endpoint are front-loaded and each subsequent sentence contributes a necessary behavioral constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter creation tool with no annotations and no output schema, the description covers core mechanics well: trigger, domain scoping, and optional graph. It omits success-response behavior and does not point to step-building siblings, leaving moderate gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All six parameters have schema descriptions, so the baseline is 3. The description adds the conceptual term 'inline step graph' but no additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact operation ('Create an automation'), notes the event trigger, and gives the HTTP endpoint. It also adds a distinguishing constraint (one sending domain, only send_event calls with that domain trigger it), so it is easy to tell apart from update_automation or add_automation_step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear contextual guidance about domain ownership and trigger behavior, and mentions the optional inline graph. However, it does not explicitly tell the agent when to prefer add_automation_step or update_automation, so alternative routing is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignA
Create a campaign targeting a sending domain's contact pool (POST /campaigns, domain-first). Send it later with send_campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Sender, e.g. "Acme <hi@yourdomain.com>". Defaults to the configured sender. | |
| html | No | ||
| name | No | Internal name for the campaign. | |
| text | No | ||
| domain | Yes | The sending domain whose contacts this campaign targets, e.g. 'yourdomain.com'. Orthogonal to `from` — the from address may be a different verified domain. | |
| ab_test | No | A/B test config, e.g. { enabled: true, subject_b, test_pct, metric: 'open'|'click'|'reply', eval_hours: 1-168 }. eval_hours sets how long to run the test before evaluating and sending the winner. | |
| list_to | No | Show a generated mailing-list address (recipient-<hex>@your-domain) as the visible To; delivery stays individual. | |
| subject | Yes | Subject line. | |
| reply_to | No | ||
| topic_id | No | Gate recipients by a topic subscription. | |
| followups | No | Engagement follow-ups (max 5): [{ condition: opened|clicked|not_opened|not_clicked|replied|not_replied, delay: '5 hours', subject?, html }] — sent after the campaign finishes, threaded as replies. | |
| recurrence | No | Make this a recurring campaign. | |
| segment_id | No | Target a segment (subset of the audience). | |
| preview_text | No | ||
| recurrence_every | No | Periods between recurring sends (1-365). Defaults to 1. | |
| unsubscribe_policy | No | How the unsubscribe list applies: 'account' (default), 'domain' (only this sending domain's opt-outs block), 'ignore' (opt-outs skipped; bounces/complaints always excluded). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It usefully reveals that creation is separate from sending and that campaigns target a domain's contact pool, but it omits other significant behaviors such as whether the domain must be verified, whether the campaign is created as a draft, what side effects occur, and what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the core action is front-loaded, and the pointer to send_campaign earns its place. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (16 parameters, nested objects, no output schema, no annotations), yet the description is only two sentences. It does not tell the agent what the API returns (e.g., campaign ID), mention any prerequisites (e.g., verified domain), or outline the broader campaign lifecycle beyond a single pointer to send_campaign. This is inadequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents most parameters in detail. The description adds little beyond the 'domain-first' hint, which is largely redundant with the domain parameter's schema description. It does not compensate for the roughly 25% of undocumented parameters (e.g., html, text, reply_to, preview_text).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') and resource ('campaign'), and scopes it to 'a sending domain's contact pool,' which clearly differentiates it from related tools like send_campaign. The endpoint hint (POST /campaigns) and 'domain-first' add further precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the follow-up action to send_campaign ('Send it later with send_campaign'), giving the agent a clear division of labor between creating and sending. It does not mention alternatives like update_campaign, but the lifecycle clue is sufficient for the most important distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contactA
Create a contact in a sending domain's contact pool (POST /contacts, domain-first). The same address on two domains is two records with separate consent.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Contact email address. | ||
| domain | Yes | The sending domain this resource belongs to (domain-first model), e.g. 'yourdomain.com' — one of your domains. | |
| last_name | No | ||
| first_name | No | ||
| properties | No | Custom contact properties. | |
| unsubscribed | No | Whether the contact is unsubscribed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does add real value: it discloses that the same email address on different domains produces separate records with independent consent, preventing the common assumption of email-based global uniqueness. It does not cover duplicate-within-domain behavior or response details, but the key non-obvious side effect is surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence front-loads the action, resource, and endpoint; the second adds the one genuinely non-obvious nuance needed to use the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core domain-first identity semantics are well covered, but operational gaps remain: no mention of what happens on a duplicate within the same domain, no return/response information (and no output schema exists), and no explicit routing to batch import tools for large lists. These are meaningful gaps for an agent handling edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover email, domain, properties, and unsubscribed (67%), and the description adds meaning beyond that by explaining the identity model: an address is only unique within a domain and consent is domain-scoped. This clarifies the relationship between domain, email, and unsubscribed beyond the literal schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('create'), a clear resource ('contact in a sending domain's contact pool'), and the HTTP endpoint. The domain-first scoping distinguishes it from related tools like create_contact_property and update_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: this is the single-contact creation path for a domain-scoped contact pool, and the domain-first note tells the agent where the resource belongs. It does not explicitly call out bulk alternatives like import_contacts_batch or import_contacts_csv, but the single-vs-bulk distinction is strongly implied by the wording and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contact_propertyA
Create a custom contact property / merge tag (POST /contact-properties). type is 'string' or 'number'. Idempotent on key: if a property with the same key already exists, returns that property (with already_existed: true) instead of an error.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Canonical merge-tag key (e.g. "company"). "name" accepted as alias. | |
| name | No | Alias for key. | |
| type | Yes | Property data type. | |
| fallback_value | No | Default value when a contact has none. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a non-obvious behavioral trait: idempotency on key, returning the existing property with 'already_existed: true' instead of erroring. It also names the POST endpoint. It doesn't mention permissions or the normal success response, but the idempotency disclosure is substantial and valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences deliver the purpose, endpoint, type constraint, and idempotency behavior without redundancy. The most important information is front-loaded, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with no output schema, the description covers the core action, the type enum, and the key edge case of duplicate keys. It omits the normal success return shape and authentication requirements, but the idempotency explanation addresses the most critical ambiguity an agent would face.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds semantic meaning to 'key' by establishing it as the idempotency identity, which goes beyond the schema's 'Canonical merge-tag key' phrasing. Other parameters remain adequately covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') and resource ('custom contact property / merge tag'), and includes the HTTP endpoint. This clearly distinguishes it from siblings like update_contact_property, delete_contact_property, get_contact_property, and list_contact_properties without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating or ensuring a property exists, and the idempotency behavior suggests it can be used safely when a key may already exist. However, it does not explicitly route to alternatives like update_contact_property when modification is intended, nor give any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_domainA
Create a sender domain (POST /domains). The response includes DNS records you must add at your DNS provider before verifying.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The domain name, e.g. "yourdomain.com". | |
| region | No | Optional sending region. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It usefully discloses that the response contains DNS records and that verification depends on adding them at the DNS provider, setting accurate expectations for post-creation state. It does not cover all edge cases, but it discloses the most important behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, each earning its place: the first states the action and endpoint, the second communicates the essential DNS follow-up. It is front-loaded and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter creation tool, the description covers the main workflow: create, receive DNS records, add them, verify. It could name the sibling verify_domain tool explicitly, but the information given is sufficient for the agent to invoke the tool correctly and understand the immediate next step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'name' and 'region'. The description adds no parameter-specific detail, but none is needed beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create a sender domain') and the exact endpoint ('POST /domains'), making the tool's purpose immediately clear. The phrase 'before verifying' also distinguishes this tool from the sibling verify_domain operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: create the domain, then add the provided DNS records before verifying. It does not explicitly name alternatives or exclusions, but the sequencing is clear enough to guide an agent toward correct use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_eventA
Create a custom-event definition (POST /events). Optional flat schema (key → 'string'|'number'|'boolean'|'date') validates /events/send payloads (422 on mismatch).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The event name automations trigger on. | |
| schema | No | Optional flat key→type map, e.g. { plan: 'string' }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a specific behavior: the schema validates /events/send payloads and returns 422 on mismatch, which is valuable. However, it omits other behavioral details such as whether the event name must be unique, whether the operation is idempotent, or any permission requirements. It provides some transparency but not a complete picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose ('Create a custom-event definition') and then adds the most important detail about schema validation. Every word earns its place; there is no fluff or redundancy. It is compact yet informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with two parameters and no output schema, the description covers the essential behavior: creating a definition and the optional validation side effect. It doesn't mention success responses or duplicate-name handling, but given the low complexity and full schema coverage, the description is reasonably complete. A brief note on return values or unique-name behavior would improve it, but it's not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by specifying allowed schema values ('string'|'number'|'boolean'|'date') and explaining the validation effect (422 on mismatch). This enriches the agent's understanding of the 'schema' parameter without repeating the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a custom-event definition (POST /events), distinguishing it from siblings like send_event (which sends events) and list_events/update_event/delete_event. The verb-resource pair is specific and unambiguous. It also hints at the schema's role, making the tool's purpose immediately identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it defines an event schema that validates /events/send payloads, implying this should be used before sending events with a schema. However, it does not explicitly mention when not to use it or name alternatives like send_event, leaving some inference to the agent. It's clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_segmentA
Create a segment on a sending domain (POST /segments, domain-first). Segment names are unique WITHIN a domain but reusable across domains. filter supports { status, email_contains, property_filters }.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Segment name. | |
| domain | Yes | The sending domain this resource belongs to (domain-first model), e.g. 'yourdomain.com' — one of your domains. | |
| filter | No | e.g. { status: 'subscribed', email_contains: '@acme.com', property_filters: [{ key, operator: 'eq'|'contains'|'exists', value? }] }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the behavioral burden; it does disclose domain scoping, name uniqueness per domain, and filter capabilities. However it omits what happens on duplicate names, required permissions, and what a successful response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences front-load the core purpose and route, then add naming semantics and filter support. No filler or redundant restating of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers domain model, name uniqueness, and filter, but lacks response/error behavior and prerequisites around domain ownership/verification. It is adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds the important cross-domain name uniqueness constraint and summarizes the filter keys. This is extra meaning beyond the schema, though the filter info largely duplicates the schema's example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names the exact operation (Create), resource (segment), scope (sending domain), and HTTP route (POST /segments). This clearly distinguishes it from sibling update/get/list/delete segment tools without requiring the agent to open schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not guidance and no named alternatives, but the create verb plus the uniqueness/domain-first context makes usage inferable. It does not tell the agent what to do if the segment already exists or when to prefer update_segment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_templateA
Create a reusable email template (POST /templates). Supports subject/html/text with {{ variables }} and optional variable definitions.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | ||
| html | No | ||
| name | Yes | Template name. | |
| text | No | ||
| alias | No | Optional stable handle for sending by alias. | |
| subject | No | ||
| reply_to | No | ||
| variables | No | Variable definitions: each { key, type?, fallback_value? }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It does disclose the POST endpoint and the templating behavior (subject/html/text with {{ variables }} and optional variable definitions), but it says nothing about authentication, duplicate-name behavior, validation, or response side effects, leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short clauses, front-loads the action and resource, and every phrase adds information: endpoint, supported fields, and variable behavior. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter creation tool with no annotations and no output schema, the description omits meaningful context: no usage guidance, no behavior on conflicts, no response expectations, and several parameters are only name-based. It is not complete enough for an agent to invoke with full confidence based solely on the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 38%, so the description needs to compensate. It usefully adds the {{ variables }} injection syntax and identifies subject/html/text as the supported content fields, but it leaves from, alias, and reply_to semantics to bare property names in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact action ('Create') and resource ('reusable email template') and gives the explicit endpoint, so an agent can distinguish this from update_template, duplicate_template, and list_templates without inspecting schemas. 'Reusable' adds useful scope beyond a generic create action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'create' and the endpoint imply this tool is for new templates, but the description does not explicitly state when to use it over update_template or duplicate_template, nor does it mention exclusions or prerequisites. Usage guidance is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_topicB
Create a subscription topic on a sending domain (POST /topics, domain-first). default_subscription is 'opt_in' or 'opt_out'; visibility is 'public' or 'private'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Topic name. | |
| domain | Yes | The sending domain this resource belongs to (domain-first model), e.g. 'yourdomain.com' — one of your domains. | |
| visibility | No | ||
| description | No | ||
| default_subscription | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method and domain-first ownership, but does not mention return values, idempotency, permission requirements, duplicate behavior, or whether the sending domain must be verified before creating a topic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with the core action and route front-loaded. The second sentence repeats enum constraints already present in the schema, making it slightly redundant, but overall it remains scannable and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema covers required fields and gives good descriptions for name and domain, and the description covers the remaining enums. However, with no output schema and no annotations, the description omits response behavior, error cases, and domain verification requirements, which would be valuable for a create operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the description adds explicit valid values for default_subscription and visibility. However, it does not explain the meaning of default_subscription, the purpose of the free-text description parameter, or any constraints on name/domain beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Create') on a 'subscription topic' tied to a 'sending domain', and includes the exact endpoint 'POST /topics' plus the 'domain-first' model. This clearly separates it from sibling tools such as list_topics, get_topic, update_topic, and delete_topic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The create verb and resource type imply when to use this tool, but there is no explicit when-to-use/when-not-to-use guidance or mention of alternatives. It does not state prerequisites like needing a valid sending domain, which would help an agent decide between this and update_topic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookA
Create a webhook endpoint (POST /webhooks). The signing secret is returned ONCE on create — store it.
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | Event types to subscribe to, e.g. ['email.delivered']. | |
| endpoint | Yes | HTTPS URL to deliver events to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden, and it discloses the key one-time secret behavior and the persistent side effect of creating an endpoint. It could mention auth or full response contents, but the most operationally critical behavior is surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the core purpose is front-loaded and the secret warning earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create operation with a complete parameter schema, it says everything an agent needs to invoke it correctly and handle the signing secret. It does not spell out the full response schema or webhook ID, but no output schema is available and the critical return value is highlighted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters completely (100% coverage), and the description adds no additional parameter-level detail. Per the baseline for high schema coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and resource: 'Create a webhook endpoint (POST /webhooks).' This clearly differentiates it from webhook siblings like list_webhooks, update_webhook, delete_webhook, and rotate_webhook_secret.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes when to use it — when creating a webhook — and adds an important consumer warning that the signing secret is only returned once. It does not explicitly name alternatives or exclusion cases, but the create-vs-manage context is clear from the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_api_keyA
Delete (revoke) an API key (DELETE /api-keys/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The API key id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It states the action ('delete/revoke') but does not disclose irreversibility, immediate invalidation, permission requirements, or any side effects. This is a significant gap for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler. It front-loads the primary action and includes the endpoint, every word earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool, the description covers the core purpose and resource. However, with no output schema and no annotations, it omits expected response behavior, idempotency, and whether the key is immediately unusable. It is minimally adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the `id` parameter. The description adds no extra parameter-level semantics (e.g., where to find the id, format constraints), so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete (revoke)') and resource ('API key'), plus the HTTP endpoint, making the action unmistakable. It clearly distinguishes this tool from siblings like create_api_key and list_api_keys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose directly implies when to use it (whenever an API key needs to be revoked). There is no explicit alternative mentioned, but the context is clear enough that an agent can infer the correct usage without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_audienceA
Delete an audience and its contacts (DELETE /audiences/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The audience id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It explicitly reveals a critical side effect: deleting an audience also deletes its contacts. However, it doesn't mention irreversibility, authorization needs, or rate limits, which would provide fuller transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: the verb and object are front-loaded, and the HTTP endpoint is appended as supplemental context. No filler or redundant explanation exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete operation with no output schema and full schema coverage, the description covers the key behavioral nuance (cascading contact deletion). It could mention that the deletion is permanent, but the combination of the DELETE method and the explicit side effect is sufficient for most agent use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the only parameter 'id' is already described as 'The audience id.' The description adds no additional semantic meaning to the parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('an audience'), with an important clarification that contacts are also deleted. It distinguishes itself from siblings like update_audience and delete_contact by naming the audience as the target and noting the cascade effect. The HTTP endpoint further reinforces the specific operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—whenever you need to delete an audience—but provides no explicit guidance on when not to use it or alternatives like delete_segment or delete_contact. There are no prerequisites, exclusions, or comparisons to sibling deletion tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_automationA
Delete an automation (DELETE /automations/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the full burden of behavioral disclosure. It only says 'Delete' without mentioning that deletion is likely permanent, whether associated steps or runs are removed, or what side effects occur. This is a destructive operation and deserves more warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no unnecessary words. It front-loads the core action and includes the endpoint in parentheses without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple operation with one fully documented required parameter, the endpoint and action are enough for an agent to select and invoke the tool correctly. The main gap is the lack of side-effect or return-value information, but the low complexity keeps the description reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is already described in the input schema. The endpoint 'DELETE /automations/:id' adds a small amount of context by showing id is a path parameter, which warrants the baseline 3 rather than lower.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Delete'), the resource ('an automation'), and the exact endpoint. It is unambiguous and distinguishable from nearby siblings like delete_automation_step because the resource level is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is only implied by the action verb and resource name; there is no explicit guidance on when to choose this over stop_automation, update_automation, or delete_automation_step. An agent can infer the intended use, but the description does not state exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_automation_stepA
Delete a step from an automation (DELETE /automations/:id/steps/:stepId). Stop (disable) the automation first if it is enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. | |
| step_id | Yes | The step id to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the DELETE method and the important stop-first requirement, but it does not mention irreversibility, required permissions, or what happens if the step is in use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the action, endpoint, and critical usage warning without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter delete operation, the description is largely complete: it identifies the action, endpoint, and precondition. It does not describe the response or side effects, but the operation's simplicity makes this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the two parameters are clearly documented as 'automation id' and 'step id to delete'. The description adds no new parameter semantics beyond confirming the endpoint mapping.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Delete a step from an automation', and reinforces it with the HTTP endpoint. This clearly distinguishes it from siblings like delete_automation, add_automation_step, and update_automation_step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit precondition: 'Stop (disable) the automation first if it is enabled.' It does not explicitly compare to alternatives, but the resource is specific enough that when to use it is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_campaignA
Delete a campaign (DELETE /campaigns/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The campaign id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure, but it only restates the destructive nature of the operation. It does not mention permanence, side effects, permissions, or whether the delete is idempotent; the endpoint method is the only added signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence states the action, resource, and endpoint with no filler or repetition. It is appropriately sized for a tool with a single parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive action, the description plus schema provide enough to invoke the tool correctly: the operation, the resource, and the required id. It lacks any warning about irreversibility, but delete semantics are sufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single id parameter with 100% coverage, so the description has little to add. The endpoint path '/campaigns/:id' reinforces that id is the campaign identifier but adds no new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a campaign') and adds the exact HTTP endpoint, leaving no ambiguity about what is being acted on. It clearly differentiates from sibling operations like delete_topic or cancel_campaign by naming the campaign resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is implied by the verb and resource: use this when a campaign needs to be deleted. However, the description gives no explicit guidance about when not to use it or how it relates to siblings such as cancel_campaign or update_campaign.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contactA
Delete a contact by id or email (DELETE /contacts/:id). Pass domain when addressing by EMAIL (picks the pool).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The contact id OR email address. | |
| domain | No | Disambiguates an EMAIL id across domains (omit for a contact id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the destructive nature (DELETE verb) and the subtle 'picks the pool' domain behavior, but does not disclose failure modes, idempotency, reversibility, or cascading side effects on associated contact data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with zero waste: the operation and endpoint come first, then a single conditional usage note. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with 100% schema coverage and no output schema, the description covers the operation, addressing modes, and the domain ambiguity handling. Minor gaps remain: no statement of error behavior for unmatched ids/emails or consequences of the destructive action, which matter more in the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both parameters well. The description adds marginal value beyond the schema, mainly reinforcing the domain-omission rule and adding the 'picks the pool' pool-selection nuance. This matches the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete'), a specific resource ('a contact'), and both addressing modes (id or email), with the HTTP endpoint clarifying the exact operation. It is clearly distinguishable from siblings like delete_received_email and delete_contact_property, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit conditional guidance: pass `domain` when addressing by email, omit it for a contact id. This gives clear dispatch context for the two addressing modes. It does not explicitly name alternatives or exclusions, though sibling differentiation is semantically obvious for a delete-contact operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contact_propertyA
Delete a contact property (DELETE /contact-properties/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The contact property id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action and HTTP method, implying mutation, but it does not disclose whether the deletion is permanent, what happens to contacts using the property, or any permission requirements. For a destructive operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that includes the essential action and HTTP endpoint, with no wasted words. It is front-loaded and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter, the description is adequate but incomplete. It does not mention irreversibility, return value, or error behavior. Given that there is no output schema and no annotations, a note about permanence or effects on dependent data would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides a 100% description coverage for the single 'id' parameter ('The contact property id.'). The description adds no additional meaning beyond what the schema already states, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete) and resource (contact property), and includes the HTTP method and path (DELETE /contact-properties/:id), making it unambiguous. It is easily distinguished from sibling tools like get_contact_property or update_contact_property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a destructive action through the verb 'delete' and the HTTP DELETE method, but it does not explicitly state when to use it vs. alternatives, nor does it mention any prerequisites or consequences (e.g., irreversibility). It is clear enough for a simple delete operation but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_domainB
Delete a domain (DELETE /domains/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that the tool deletes a domain, but does not mention irreversibility, cascading effects on DNS or email sending, required permissions, or whether confirmation is needed. The HTTP DELETE method is the only implicit signal of destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every element—the action, resource, and endpoint—earns its place, and the syntax is immediately scannable by an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description is too sparse. It omits any context about deletion consequences, required state (e.g., unverified vs. verified), or what happens to dependent resources, making it less than minimally viable for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter landscape: one required id field with a clear description. The tool description adds no additional meaning beyond the schema, but since schema coverage is complete, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Delete') on a specific resource ('a domain') and gives the exact REST endpoint (DELETE /domains/:id). This makes it immediately distinguishable from sibling tools like delete_received_email or update_domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions such as 'only delete domains that are not currently in use.' It only states what the operation does, leaving usage decisions entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_eventA
Delete a custom-event definition (DELETE /events/:id). Existing automations keep their trigger names; this only removes the definition + its payload validation.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The event definition id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. It discloses non-obvious consequences: existing automations keep their trigger names and only the definition and validation are removed. This goes beyond a generic 'delete' statement, though it omits irreversibility and return-value details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The primary action is front-loaded, and the important side-effect caveat about automations is placed directly afterward. Every clause adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one required parameter, fully described schema, and no output schema. The description adequately explains what is deleted and what is preserved, making the tool safe to invoke. A small gap is the lack of explicit confirmation about permanence or the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single 'id' parameter with a clear description, and schema coverage is 100%. The tool description adds no extra parameter semantics, but none are needed given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource, 'Delete a custom-event definition', and includes the REST endpoint. It clearly distinguishes this from sibling tools like delete_automation or delete_contact by scoping the resource as the event definition rather than the event data itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies the tool's exact scope, noting that automations retain their trigger names and only the definition plus payload validation are removed. It does not explicitly name an alternative tool for different deletion scenarios, but the context makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_received_emailA
Permanently delete a received email, including its stored raw message and attachments (DELETE /emails/receiving/:id). This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The received email id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly discloses permanent deletion, irreversibility ('This cannot be undone'), and the full destruction scope (raw message plus attachments). This is exemplary transparency for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly focused sentences that front-load the action and resource, then provide the critical irreversibility warning. No filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive operation with no annotations and no output schema, the description is complete: it states what is deleted, the endpoint, and that the operation is permanent. An agent has everything needed to invoke it correctly and understand consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% ('The received email id.'), so the baseline is 3. The description adds minor context by embedding the id in the endpoint path and tying it to the received email resource, but it does not explain how to obtain or validate the id. This is adequate but not additive beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Permanently delete'), a specific resource ('received email'), and the full scope of what is deleted ('including its stored raw message and attachments'). This clearly distinguishes it from sibling tools like cancel_email, update_email, and forward_received_email, so an agent can tell what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this when a received email must be permanently removed. It does not explicitly name alternatives or exclusions, but none of the sibling tools directly compete for received-email deletion, so the purpose statement effectively guides selection. Slightly more explicit when-not-to-use guidance would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_segmentA
Delete a segment (DELETE /segments/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The segment id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Delete' signals destructiveness, but the description does not disclose irreversibility, whether contacts or segment memberships are affected, required permissions, or any side effects. This is a meaningful gap for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the action and endpoint front-loaded. There is no filler, repetition of schema details, or unnecessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete, this is minimally viable, but without annotations or an output schema it omits side effects, error/status behavior, and what a successful deletion returns. An agent would still have open questions about impact and confirmation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter (id) with 100% coverage, so the description does not need to restate it. The HTTP endpoint adds the minor detail that id is a path parameter, but otherwise adds no significant semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and resource ('segment') plus the HTTP endpoint, making the operation unambiguous. It is clearly distinguishable from sibling segment tools like create_segment, get_segment, update_segment, and list_segments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The correct usage is implied by the verb and resource, but there is no explicit when-to-use guidance, prerequisites, or mention of alternatives/exclusions. For a straightforward delete, this is adequate but not actively instructive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_templateB
Delete a template (DELETE /templates/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The template id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Delete', so the agent knows the operation is destructive, but it does not disclose whether deletion is permanent, what happens to templates in use, or any permission or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the endpoint included, no filler. The essential verb and resource are front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the only parameter is fully documented in the schema. However, there are no annotations, no output schema, and no mention of side effects or response behavior, leaving the destructive consequences partially implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter with 'The template id', so the baseline is 3. The description adds no parameter-specific meaning, which is acceptable because the schema fully documents it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Delete', the resource 'template', and the exact endpoint 'DELETE /templates/:id'. This unambiguously distinguishes it from sibling tools like update_template, duplicate_template, or publish_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to choose this tool over alternatives such as update_template or publish_template. There are no prerequisites, conditions, or exclusions, so the agent must infer usage from the operation name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_topicA
Delete a topic (DELETE /topics/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The topic id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It clearly states the destructive action ('Delete') and the HTTP method, which is transparent at a basic level. However, it does not mention whether deletion is permanent, irreversible, or whether it affects related resources like contacts or campaigns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one short sentence that includes the action, resource, and endpoint. There is no redundant or filler content, and every word contributes to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete operation with no output schema, the description provides enough call-level context: the action, resource, and endpoint. It could additionally mention what happens after deletion (e.g., success response shape), but this is a minor gap for such a simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single 'id' parameter at 100% coverage with 'The topic id.' The description adds no additional semantic meaning, but the schema is sufficient, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and resource ('topic'), and reinforces it with the HTTP endpoint 'DELETE /topics/:id'. This makes the tool's action unambiguous and distinguishes it from siblings like create_topic, update_topic, get_topic, and list_topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, nor any constraints such as prerequisites or consequences. The agent is left to infer that this is for removing a topic rather than updating or listing it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookB
Delete a webhook (DELETE /webhooks/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The webhook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only states the HTTP method DELETE, which implies destruction, but it does not mention permanence, side effects, permissions, or what happens to associated resources. This is minimal transparency for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. Every word contributes to identifying the action and resource, making it highly concise and clearly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete with no output schema and no annotations, the description conveys the core action but omits operational context such as whether the deletion is permanent, how success or failure is reported, or any prerequisites. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — the single parameter 'id' is already fully documented as 'The webhook id.' The description adds no additional parameter semantics or examples, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Delete a webhook' — and reinforces it with the REST endpoint 'DELETE /webhooks/:id'. This clearly distinguishes the tool from sibling webhook tools like create_webhook, get_webhook, update_webhook, and rotate_webhook_secret.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool vs alternatives, nor any prerequisites or caveats. Usage is only implied by the name and action 'Delete', leaving the agent to infer context such as irreversibility or required ownership.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_domain_dnsA
Detect a domain's DNS provider and the one-click apply methods available (GET /domains/:id/dns/detect).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It includes the HTTP GET method, which signals a read-only operation, and states what the tool returns. It does not mention error cases, prerequisites, or permission requirements, but the read-only nature is reasonably conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that gives the purpose, the output type, and the exact endpoint with no filler or repetition. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only detection tool with no output schema, the description adequately conveys what will be returned: DNS provider and available one-click apply methods. It could mention prerequisites like domain ownership or verification, but those may be shared across domain tools and are not critical for the primary call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, id, is already fully described in the input schema as 'The domain id.' The description adds no additional parameter detail, but since schema coverage is 100%, the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Detect'), the resource ('a domain's DNS provider'), and the additional output ('one-click apply methods available'). It also includes the exact endpoint, making the tool's function unambiguous and distinct from the apply_domain_dns_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used before selecting a one-click DNS apply method, as it detects the provider and available apply methods. However, it does not explicitly mention alternatives like check_domain_mx or state when not to use this tool, so the context is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_templateA
Duplicate a template (POST /templates/:id/duplicate).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The template id to copy. | |
| name | No | Optional name for the copy. | |
| alias | No | Optional alias for the copy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the HTTP method and path, but does not state that a new copy is created while the original remains unchanged, whether the operation is idempotent, or what is returned. For a mutating operation this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word contributes the action and the endpoint, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter operation with no output schema, the description is minimally adequate but leaves out behavioral details and usage context. An agent can likely call it correctly, but it lacks the safeguards a well-rounded definition would provide.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents id, name, and alias. The description adds no parameter semantics beyond the endpoint's :id placeholder, which is already represented in the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Duplicate') and resource ('a template'), and the endpoint POST /templates/:id/duplicate reinforces the action. This clearly distinguishes it from siblings like create_template, get_template, update_template, and delete_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use evident from the verb, but it offers no explicit guidance on when to choose duplication over create_template or update_template. No exclusions or alternative routing are provided beyond the inherent meaning of the action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forward_received_emailB
Forward a received email to other recipients (POST /emails/receiving/:id/forward). "from" must be a verified sending address; defaults to the configured sender.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The received email id. | |
| to | Yes | Forward recipient(s). | |
| from | No | A verified sending address. Defaults to the configured sender. | |
| subject | No | Optional override subject. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose the 'from' must be verified, which is a useful constraint, but it does not mention side effects (e.g., that the email is actually sent), any authorization requirements, or what happens to the original email. For a mutation action, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core action. It consists of two sentences with no filler. The HTTP endpoint is included but does not bloat the description. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (4 params, no output schema) and full schema coverage, the description covers the essential action and the key 'from' constraint. However, it omits usage guidance and does not mention any prerequisites beyond the verified sender, which for a forwarding action might be expected. It is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all four parameters, so the baseline is 3. The description adds no new parameter semantics beyond repeating the 'from' constraint already present in the schema. It does not clarify the 'to' array format or the subject override beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Forward a received email to other recipients.' It specifies the verb (forward), the resource (received email), and the target (recipients). It also includes the HTTP endpoint, which adds precision. This distinguishes it from sibling tools like delete_received_email and reply_received_email.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. It mentions the 'from' parameter must be a verified sending address, but that is a parameter constraint, not usage context. There is no explicit statement about when to choose forward over reply or delete, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audienceA
Retrieve an audience by id (GET /audiences/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The audience id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the HTTP method GET, indicating a read-only operation, but it does not describe error behavior, authorization needs, or return format. This is adequate for a simple retrieval tool but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the verb and resource front-loaded, and the endpoint parenthetical adds precise value without padding. Every token earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-nested-object tool with a complete schema, the description is essentially sufficient: it names the resource, the lookup key, and the HTTP method. Since there is no output schema, a brief note on the return value would make it fully complete, but this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already documented in the input schema. The description adds no new meaning beyond restating that retrieval is by id, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieve') and resource ('an audience') and qualifies it by id, which clearly distinguishes it from list_audiences, update_audience, and delete_audience. The inline endpoint GET /audiences/:id reinforces the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies this is for fetching a single audience when the id is known, but the description does not explicitly name list_audiences as the alternative for fetching all audiences, nor does it provide a when-not-to-use condition. Usage guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_automationA
Retrieve an automation, including its step graph (GET /automations/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the HTTP method (GET) implying read-only behavior, and explicitly mentions the step graph inclusion. However, it does not describe the complete return payload, error conditions, or whether run history is excluded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary action and resource, then adds the useful endpoint reference. There is zero redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple GET tool with one parameter and no output schema, the description covers the core purpose and highlights the step graph, which is the distinguishing feature. It could mention what is not returned (e.g., run history) but is otherwise complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'id' parameter, and the schema already explains it as 'The automation id.' The description adds no additional semantics beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Retrieve') and resource ('an automation'), and adds 'including its step graph' which distinguishes it from list_automations and get_automation_run. The REST endpoint provides an unambiguous reference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus its siblings like list_automations or get_automation_run. It does not mention when to prefer this over alternatives, so the agent must infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_automation_runA
Retrieve a single automation run, including its step-by-step trace (GET /automations/:id/runs/:runId).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. | |
| run_id | Yes | The run id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Retrieve' implies a read-only operation, and 'including its step-by-step trace' discloses what the response contains. However, it doesn't explicitly state side-effect-free behavior, error handling, or permission requirements. For a simple GET this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly constructed sentence with no filler. It front-loads the main action and resource, then appends the differentiating trace detail and endpoint. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter GET with no output schema, the description is nearly complete. It identifies the resource, the trace, and the endpoint. It doesn't describe the response format in detail, but the mention of 'step-by-step trace' gives the agent sufficient context to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already well documented. The description's endpoint '/automations/:id/runs/:runId' adds a modest clarification of the id/run_id relationship, but it doesn't add meaningful semantic value beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieve', the specific resource 'a single automation run', and adds the distinctive detail 'including its step-by-step trace'. It also includes the exact endpoint, which distinguishes it from sibling tools like list_automation_runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this when you need a single run's full details. It doesn't explicitly mention alternatives or when not to use it, but the word 'single' implies contrast with the listing sibling. No exclusionary guidance is given, 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.
get_campaignA
Retrieve a campaign by id (GET /campaigns/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The campaign id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose the HTTP method (GET) and resource path, which implies a read-only lookup with no destructive side effects. It does not mention not-found behavior, response shape, or error cases, but for a simple single-resource GET this is acceptable baseline transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the operation and includes the endpoint in parentheses. There is no filler or redundancy, and every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity: one required id parameter, no nested objects, no output schema. The description plus schema is enough for an agent to select and invoke the tool correctly and to infer that the campaign object is returned. The only gap is explicit return/error behavior, which is minor for a simple GET.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already defines id as a required string. The description adds only that the id identifies the campaign and appears in the URL path, which is minor extra context rather than substantive parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve'), a clear resource ('campaign'), and a selection criterion ('by id'), plus the REST endpoint. This distinguishes it from siblings like list_campaigns (collection) and get_campaign_stats (analytics).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'by id' and the GET /campaigns/:id endpoint: call this when you have a single campaign id and need that campaign. However, it does not explicitly mention alternatives such as list_campaigns for multiple campaigns or get_campaign_stats for statistics, so the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaign_abA
A/B winner evaluation for an A/B-test campaign (GET /campaigns/:id/ab).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The campaign id (must be an A/B test). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. The GET method and the word "evaluation" imply a read-only operation, and the description notes the A/B-test precondition. However, it does not disclose error behavior, whether a winner may be absent, or what exactly is returned, so the transparency is only minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the purpose and includes the exact HTTP endpoint. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter GET tool with a fully documented schema, the description is largely complete: it states the resource, the A/B-test condition, and the endpoint. Since there is no output schema, a slightly more explicit statement of the return value (e.g., the winning variant or a null result) would make it fully complete, but nothing essential to deciding whether to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the id parameter is already clearly described as the campaign id that must be an A/B test. The endpoint in the description reinforces that id is a path parameter, but it adds no meaning beyond what the input schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (an A/B-test campaign) and the specific concern (A/B winner evaluation), and the included GET endpoint helps distinguish it from general campaign tools like get_campaign_stats or list_campaigns. It is not quite a 5 because "evaluation" is slightly abstract; an explicit verb like "retrieve the winning variant" would be more precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "for an A/B-test campaign" gives a clear context for when this tool applies, and the endpoint name shows this is specifically about the A/B result rather than general campaign information. However, it does not explicitly say when NOT to use it or name alternatives such as get_campaign_stats, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaign_statsB
Per-campaign analytics — counts, engagement rates, and top clicked links (GET /campaigns/:id/stats).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The campaign id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The 'GET /campaigns/:id/stats' notation indicates a read-only operation, and the listed outputs (counts, engagement rates, top clicked links) describe some behavior. However, it does not disclose response format, error conditions, or whether data is aggregate over all time or a specific period.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the core purpose and includes the endpoint. Every element earns its place, and there is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema read tool, the description is reasonably complete: it names the resource, the required identifier, and the specific data returned. Minor gaps like pagination, default time windows, and response shape are not addressed, but the description covers the essentials an agent needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes the single required parameter 'id' as 'The campaign id,' so schema coverage is 100%. The description adds no additional meaning, format expectations, or validation details beyond the schema, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as per-campaign analytics and enumerates the returned data: counts, engagement rates, and top clicked links. It distinguishes this from campaign CRUD tools like get_campaign or list_campaigns through the word 'analytics' and the stats endpoint, though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to choose this tool over alternatives such as get_campaign, get_campaign_ab, or list_campaigns. The intended use is only implied by the phrase 'per-campaign analytics,' leaving the agent to infer that this is for metrics rather than campaign configuration or details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contactA
Retrieve a contact (GET /contacts/:id). A contact id is exact; an EMAIL can exist in several domains' pools, so pass domain to pick the pool.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The contact id OR email address. | |
| domain | No | Disambiguates an EMAIL id across domains (omit for a contact id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that this is a GET operation and explains the domain/email pool nuance, but it does not specify what happens if `domain` is omitted for an email id, nor the response format or error handling. It adds useful context but leaves important behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource. The critical nuance about email pools is delivered compactly with no filler or redundant restating of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read operation with 100% schema coverage, the description covers the main contextual pitfall (email ambiguity across pools) and the exact endpoint. It lacks response shape and error behavior, but given the low complexity and the presence of sibling tools for related operations, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters, and schema coverage is 100%. The description adds genuine meaning beyond the schema by explaining why `domain` is needed and when it can be omitted, enriching the semantics of `id` as an ambiguous email reference rather than just a string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Retrieve a contact') and states the endpoint (GET /contacts/:id). It also distinguishes the tool by clarifying that the id may be a contact id or an email, setting it apart from sibling tools like get_contact_property or list_contacts without requiring schemas to be opened.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational context: a contact id is exact, while an email needs the `domain` parameter to disambiguate across pools. It does not explicitly name alternative tools or state when not to use this one, but the single-contact retrieval scope is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contact_propertyA
Retrieve a contact property by id (GET /contact-properties/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The contact property id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Because no annotations are provided, the description must carry the behavioral burden. It does convey read-only semantics through 'Retrieve' and the GET verb, but it does not disclose potential 404 behavior, permission requirements, or response shape. For a simple getter this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the action and resource, then adds the endpoint for precision. There is no filler or redundancy, making it appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity—one required parameter, no nested objects, no annotations, and no output schema—the description plus schema is sufficient for an agent to call it correctly. Minor omissions like return format and error conditions are not critical for a standard GET-by-id tool, but would have made it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the lone `id` parameter is already described as 'The contact property id.' The description adds no further semantic meaning beyond the endpoint placeholder, so the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Retrieve' and the resource 'contact property by id', and reinforces it with the concrete endpoint 'GET /contact-properties/:id'. This distinguishes it from sibling tools like list_contact_properties, update_contact_property, and delete_contact_property without needing to open schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies the intended use case: fetch a single contact property when the id is known. However, it does not explicitly contrast with list_contact_properties for enumeration or mention that this is a read-only alternative to update/delete, so the when-not guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contact_topicsA
Get a contact's topic subscriptions (GET /contacts/:id/topics).
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the HTTP method and endpoint, indicating a read-only operation, but it does not mention response shape, error conditions, or whether subscriptions are returned in any particular order.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that names the action, resource, and endpoint with no filler. The essential scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read operation, the description gives enough context to select and invoke the tool correctly. The absence of an output schema is mitigated by the clear notion of 'topic subscriptions', though a bit more detail on the response would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents contact_id with 100% coverage grating, so the description adds no parameter detail beyond what is available. The endpoint does illustrate how the parameter is used, which is a small bonus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' with a clear resource ('a contact's topic subscriptions') and includes the endpoint. This distinguishes it from the sibling update_contact_topics and from generic list_topics without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The GET method and resource scope imply this is the read-only counterpart to update_contact_topics, but the description does not explicitly state when to use this tool versus alternatives. Usage is inferable but not directly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domainA
Retrieve a domain, including its DNS records and verification status (GET /domains/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that the tool is read-only (retrieve) and mentions the response includes DNS records and verification status. However, it does not mention any side effects (likely none), authorization requirements, or rate limits. The mention of GET /domains/:id adds context about the underlying API operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that precisely states the action, resource, and return contents. It is front-loaded with the purpose and includes the endpoint for reference. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one well-documented parameter, and the description covers the return content. Since there is no output schema, mentioning the return fields is essential and is done. The only minor gap is not stating that the domain must exist or what errors might occur, but the description is adequate for a simple retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so the parameter 'id' is well documented. The description does not add additional meaning beyond what the schema provides, but baseline 3 is appropriate given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a domain and explicitly includes the data returned: DNS records and verification status. The verb 'Retrieve' matches the GET operation, and the description differentiates it from sibling tools like update_domain or delete_domain by indicating a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates this is for reading a domain's information, as opposed to updating, deleting, or verifying. However, it does not explicitly state when to use this over verify_domain or list_domains, but the read context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_claimA
Retrieve the current claim (and its TXT verification record) for a placeholder domain (GET /domains/:id/claim).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does a solid job: the explicit GET method and 'retrieve' make this a read-only, non-mutating operation, and it discloses that both the claim and TXT record will be returned. It does not discuss prerequisites or error behavior, but for a one-resource getter this is a reasonable transparency level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence conveys the operation, the scope (placeholder domain), the return contents, and the raw HTTP endpoint. No filler, no repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one fully documented parameter and no output schema, the description covers the essential selection and invocation facts. It could add an explicit alternative (e.g., use verify_domain_claim to trigger verification) or response shape, but nothing critical is missing for a basic call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (id is clearly documented), so the baseline is 3. The description adds no param-level meaning beyond the endpoint path, which is acceptable but not enriching; nothing is hidden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retrieve'), resource ('current claim ... for a placeholder domain'), and explicitly includes the endpoint GET /domains/:id/claim. It also names a concrete part of the return payload (TXT verification record), which distinguishes it from generic domain getters and from claim_domain/verify_domain_claim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: an agent would call this when it needs the existing claim/TXT verification record rather than creating or verifying a claim. However, it never names the relevant siblings or states when not to use it, so the routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_attachmentA
Retrieve metadata for one attachment of a sent email (GET /emails/:id/attachments/:attachmentId). Returns a download_url for the file.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The email id. | |
| attachment_id | Yes | The attachment id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing behavior; 'Retrieve metadata' and the GET endpoint clearly indicate a read-only operation with no side effects. It also discloses a key observable output, download_url, which helps set expectations, though it does not mention auth requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the action, scope, endpoint, and key output. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read operation with no output schema, the description provides the required inputs, the scope, and the main return value. It could be more complete with response shape or permission/error details, but an agent has enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with id and attachment_id already described simply in the schema. The description adds the endpoint mapping and clarifies the attachment belongs to a sent email, but it does not add format, constraints, or additional parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves metadata for one attachment and explicitly scopes the operation to sent emails via 'sent email' and the endpoint path. This distinguishes it from sibling tools like get_received_email_attachment and list_email_attachments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sent-email context is implied through the wording and endpoint, which helps differentiate it from received-email attachment tools, but it never explicitly names alternatives or states when to use this tool over them. No exclusions or alternate tool routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_logA
Retrieve a single API log entry, including request/response bodies (GET /logs/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The log id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that this is a retrieval operation and that request/response bodies are included, but it does not mention auth requirements, potential truncation of bodies, error behavior, or retention limits. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. The endpoint parenthetical adds useful context, and the core capability is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter retrieval tool with full schema coverage, and the description clearly identifies the resource and the response content. Although there is no output schema and some behavioral details are absent, the description is complete enough for an agent to invoke the tool correctly with a log id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'id' is already described as 'The log id.' The description does not add materially beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Retrieve a single API log entry', which clearly distinguishes this tool from list_logs and other sibling tools. Including 'request/response bodies' and the endpoint 'GET /logs/:id' adds precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'a single API log entry' gives clear context for when this tool is appropriate versus listing logs, and the endpoint implies a direct lookup by id. However, it does not explicitly name an alternative or state exclusion criteria such as 'use list_logs to find IDs first.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_poll_resultsA
Get the aggregated answer breakdown for one email's poll (GET /polls/:emailId).
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | The email id the poll was sent on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does convey a read-only retrieval via 'Get' and 'GET', and it discloses the result concept of an aggregated breakdown. However, it does not mention behavior for missing polls, error conditions, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, adds the endpoint for precision, and includes no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only GET tool, the description provides enough information for an agent to understand what it does and what input is required. The main gap is the lack of detail about the exact breakdown structure and error behavior, but these are minor for invocation purposes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes email_id with 100% coverage, so the description does not need to add much. It adds no extra format, constraints, or usage detail beyond the schema, placing it at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific action ('Get'), the resource ('poll'), and the scope ('for one email'), while also specifying the result type ('aggregated answer breakdown'). It clearly differentiates itself from collection-level siblings like list_polls by emphasizing a single email's poll.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one email's poll' implies a singular retrieval context, and the GET endpoint clarifies the operation, but there is no explicit guidance about when to use this tool versus alternatives such as list_polls, nor any stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_received_emailA
Retrieve a single received email by id (GET /emails/receiving/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The received email id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does communicate that this is a GET operation and therefore read-only, but it does not mention authentication requirements, rate limits, response format, or behavior when the id is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the verb, resource, and endpoint all front-loaded. There is no wasted text, and the inclusion of the GET path adds useful precision without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter single-resource fetch, the description is mostly adequate, but with no output schema and no annotations, it does not clarify what fields the returned email object contains or how it differs from get_received_email_raw. Some additional context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description reinforces that the id selects the received email. It does not add meaningful format or syntax details beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve') and resource ('single received email by id'), and includes the exact HTTP endpoint. This clearly distinguishes it from sibling tools like list_received_emails and get_received_email_raw.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to choose this tool over alternatives such as get_received_email_raw or list_received_emails. The 'by id' phrasing implies a usage condition, but no explicit when/when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_received_email_attachmentA
Retrieve metadata for one attachment of a received email, including its download_url. (GET /emails/receiving/:id/attachments/:attachmentId serves the raw bytes; this tool returns the matching metadata entry from the attachment list instead.)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The received email id. | |
| attachment_id | Yes | The attachment id (or legacy numeric index). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses that the tool returns metadata (not raw bytes), includes download_url, and is a read-only retrieval of an existing attachment entry. This is sufficient for a simple metadata-fetch operation and clarifies what the agent will and will not receive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core purpose is front-loaded. The parenthetical efficiently prevents confusion with the raw-bytes endpoint without expanding the description unnecessarily.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity metadata retrieval with two fully documented parameters, the description covers the essential behavior and return content. No output schema or annotations exist, but the description gives enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both id and attachment_id are already described. The description adds no new parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the operation: retrieve metadata for one attachment of a received email, including download_url. The description explicitly distinguishes this tool from the raw-bytes endpoint and implicitly from sibling get_email_attachment by restricting scope to received emails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance by contrasting this tool with the raw-bytes endpoint and stating it returns the metadata entry instead. It could explicitly name sibling tools like get_email_attachment or list_received_email_attachments, but the distinction from the alternative HTTP endpoint gives practical usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_received_email_rawA
Download the original RFC822/MIME message of a received email (GET /emails/receiving/:id/raw). Returns the raw message as text.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The received email id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the return format ('raw message as text') and that it downloads the original message, implying a read-only operation. However, it doesn't disclose any potential side effects, error conditions, or authentication requirements. For a simple GET operation, this is adequate but not rich; it provides the essential behavioral detail but no extras.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the action, resource, and return type. It includes the endpoint path as a helpful reference without unnecessary fluff. Every word earns its place, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description is nearly complete. It specifies the resource and the return type. It could optionally mention the message encoding or note that this is the raw content versus parsed, but given the simplicity and sibling context, nothing critical is missing. The description is sufficient for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'id' with a basic description ('The received email id.'). Since schema description coverage is 100%, the baseline is 3. The description does not add any additional meaning to the parameter beyond what the schema already provides, so no bonus is earned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Download') and a clear resource ('the original RFC822/MIME message of a received email'), and even includes the endpoint path. It distinguishes this from sibling tools like get_received_email (which would return parsed fields) and get_received_email_attachment by focusing on the raw message. The purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need the raw RFC822/MIME message), but it does not explicitly mention alternatives or exclusion conditions. For example, it doesn't say 'Use this when you need the raw message instead of parsed fields; use get_received_email for parsed data.' The guidance is implicit but not explicit, so it meets the baseline but lacks direct routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_segmentA
Retrieve a segment by id (GET /segments/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The segment id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'Retrieve' plus the GET method make the read-only nature clear, but the description does not mention response format, error behavior (e.g., 404), or authorization requirements. It is adequate but lacks richer behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with zero fluff. It front-loads the operation and includes the exact endpoint, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter GET tool, the description and schema together are sufficient to call it correctly. It does not explain the response shape, but 'retrieve a segment' implies the returned object, and no output schema is present. Minor gaps remain around error handling and response details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% documentation coverage for the single 'id' parameter, so the schema already explains the parameter. The description adds only 'by id', which restates the schema rather than providing additional semantic detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve') and resource ('a segment by id'), and the endpoint GET /segments/:id confirms the exact operation. It clearly distinguishes from sibling tools like list_segments, create_segment, update_segment, and delete_segment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this tool should be used when you have a segment id and want that single segment's details. However, there is no explicit guidance comparing it to list_segments or other segment tools, nor any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateA
Retrieve a template by id (GET /templates/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The template id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The 'GET /templates/:id' endpoint explicitly signals a read-only, non-mutating operation, which is useful. However, it does not mention behavior for missing/invalid ids, response format, or any auth requirements, leaving some gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that includes the HTTP endpoint. It contains no fluff or repetition, and the core behavior is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-parameter retrieval tool, and the description provides enough information for an agent to invoke it correctly. It does not detail the return value or error cases, but given the low complexity and the implied response of the template object, the description is nearly complete for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already described as 'The template id.' The description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve') and resource ('a template by id'), making the operation unambiguous. It is clearly distinguishable from sibling tools like list_templates or create_template because it specifies retrieval of a single template via its id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as list_templates. The 'by id' phrasing implies single-item retrieval, but there is no explicit when-to-use or when-not-to-use instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topicA
Retrieve a topic by id (GET /topics/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The topic id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It clearly signals a read-only operation through 'Retrieve' and the explicit 'GET' method, which is a strong transparency indicator. It does not mention error behavior or permissions, but for a simple fetch these are minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no redundant words. The action is front-loaded, and the parenthetical endpoint is a compact, useful addition. Every element earned its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read operation with no output schema, the description is largely complete: it names the action, the resource, and the endpoint. It does not describe the response shape or error handling, but 'retrieve' sufficiently implies a single-object response. Minor gaps prevent a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the only parameter ('id' as a string), so schema description coverage is 100%. The description does not add new semantic detail about the id format or behavior, which is acceptable but not value-adding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve a topic by id') and the resource, distinguishing it from siblings like list_topics, create_topic, update_topic, and delete_topic. The verb+resource combination is unambiguous, and the HTTP path adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies the tool is for fetching a single topic when an id is known, but it does not explicitly mention when to use it versus list_topics or other alternatives. Usage context is implied rather than stated, so it earns a midpoint score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhookA
Retrieve a webhook by id (GET /webhooks/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The webhook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses the HTTP method GET, which implies a read-only, non-mutating operation. However, it does not mention what happens for missing/invalid IDs, authentication requirements, or response format, leaving some behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that states the operation, the resource, and the HTTP endpoint. Every element is informative and no filler exists, making it easy to scan and action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter GET tool, the description provides enough to invoke it: provide a webhook id. However, with no output schema and no annotations, it omits return value expectations, error behavior, and any caveats, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter 'id' is already described as 'The webhook id.' The description repeats 'by id' and adds the path template, but does not meaningfully expand on the parameter's semantics, such as format or source of the ID. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action ('Retrieve'), resource ('webhook'), and key selector ('by id'), reinforced by the REST path GET /webhooks/:id. This clearly differentiates it from list_webhooks, whose purpose is fetching all webhooks, and from mutation tools like create/update/delete_webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies the tool is for fetching a single webhook when its ID is known, but it does not explicitly state when to prefer this over list_webhooks or mention any alternative. There is no guidance on exclusions, such as 'use list_webhooks to enumerate webhooks'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_contacts_batchA
Bulk-import contacts from a JSON array (POST /audiences/:id/contacts/batch). Upserts by email; max 10,000 per call. Each contact: { email, first_name?, last_name?, unsubscribed?, properties? }.
| Name | Required | Description | Default |
|---|---|---|---|
| contacts | Yes | Array of contact objects (max 10,000). | |
| audience_id | Yes | The audience to import into. | |
| on_conflict | No | How to resolve an email that already exists. Default 'upsert'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does disclose the upsert-by-email behavior, the maximum batch size, and the accepted contact fields, but it does not mention error handling, partial failures, auth requirements, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences convey the endpoint, operation, upsert behavior, batch limit, and contact schema with no filler. Key constraints are front-loaded and every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a basic bulk-import call, covering the essential operation, payload shape, and limits. However, with no output schema, it does not explain expected return values, batch error behavior, or duplicate-within-batch handling, which an agent may need to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds value by specifying the per-contact object shape (email, first_name?, last_name?, unsubscribed?, properties?), which is absent from the schema's generic array item definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: bulk-import contacts from a JSON array, and includes the endpoint and key semantics (upsert by email). It implicitly differentiates from CSV/sheet import siblings by specifying JSON format, though it does not name an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: use this tool for bulk JSON imports, with a 10,000-per-call limit. However, there is no explicit guidance about when to prefer import_contacts_csv, import_sheet_contacts, or create_contact, nor any when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_contacts_csvB
Bulk-import contacts from CSV text (POST /audiences/:id/contacts/import). Header row optional; the email column is required. Non-builtin columns auto-register as custom properties unless create_properties is false. Max 5 MB / 10,000 rows.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | Yes | CSV text (header row optional; email column required). | |
| audience_id | Yes | The audience to import into. | |
| on_conflict | No | How to resolve an email that already exists. Default 'upsert'. | |
| create_properties | No | Default true — auto-register non-builtin columns as custom properties. false = strict (only registered columns kept). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose useful constraints: header row optional, email required, auto-registration of non-builtin columns, and 5 MB/10,000-row limits. However, it does not say whether the import is synchronous, what the response shape is, or whether existing contacts are modified beyond the schema's on_conflict parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, all informative, with the purpose and endpoint front-loaded and constraints following in a logical order. No filler or repetition; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 100% schema coverage and no output schema, the description reasonably covers input format and key limits. The main gap is the lack of any statement about the result of the operation (e.g., success response, async job, counts), which is important for a bulk import tool with no annotations or output schema to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some redundancy (header optional, email required) plus one genuinely new constraint (5 MB/10,000 rows), but it does not substantially enrich understanding of audience_id or the conflict-resolution semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-resource pair: 'Bulk-import contacts from CSV text' and gives the exact endpoint. It is clearly distinct from the sibling import_contacts_batch by centering on CSV text rather than a batch payload, though it does not explicitly name or contrast the sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus import_contacts_batch, import_sheet_contacts, or the single create_contact tool. The CSV-text focus is implied, but the description never states conditions or excludes alternatives, leaving the agent to infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_sheet_contactsA
Import contacts from a link-shared Google Sheet (POST /audiences/:id/contacts/import-sheet). Sheet headers become contact properties usable as {{merge_tags}}; rows land in a fresh segment.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The sheet's share URL (Anyone with the link can view). | |
| audience_id | Yes | The audience to import into. | |
| segment_name | No | Optional name for the created segment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains non-obvious side effects: sheet headers become contact properties usable as merge tags, and rows land in a fresh segment. It omits details like async behavior or error conditions, but the core behavioral contract is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler. The endpoint, input source, and key side effects are front-loaded, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no nested objects and full schema coverage, the description covers purpose, input format, and side effects well. It lacks explicit return-value or error behavior, and there is no output schema, so it falls just short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description adds outcome-level context but no new per-parameter meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: import contacts from a link-shared Google Sheet. It also describes the key outcomes (headers become merge tags, rows land in a fresh segment), which clearly differentiates it from sibling tools like import_contacts_csv and import_contacts_batch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The source constraint 'link-shared Google Sheet' gives clear context for when this tool should be selected over CSV or batch import siblings. It does not explicitly name alternatives or say when not to use it, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_api_keysA
List API keys (GET /api-keys).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the transparency burden. The phrase 'GET /api-keys' signals a read-only, non-mutating operation, and 'List' reinforces that it does not create or delete keys. It does not disclose response format, pagination, or auth requirements, but for a simple read-only listing the core behavior is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. The endpoint parenthetical is compact and useful for wiring the call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list operation with no output schema, the description supplies the essential information needed to invoke the tool: what it lists and the endpoint. It leaves out auth and pagination details, but those are not strictly required to make the call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing the description needs to add beyond the empty input schema. The 100% schema description coverage and empty properties make parameter semantics a non-issue.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific operation ('List'), the exact resource ('API keys'), and the HTTP endpoint ('GET /api-keys'), making the tool's purpose unmistakable. It also naturally distinguishes itself from the sibling tools create_api_key and delete_api_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named. However, the verb-resource pairing implies the use case (retrieve existing API keys), and the sibling set only includes create/delete variants, so the intended usage is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audiencesC
List audiences (GET /audiences).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The GET method and 'List' verb communicate that this is a read-only enumeration, which is useful given no annotations are provided. However, the description does not disclose pagination behavior, default limits, ordering, or response shape, so the tool's behavior beyond the basic HTTP method remains opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It is efficient, though arguably too terse to fulfill the informational burden for a tool with three undocumented parameters and no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations, output schema, and parameter documentation, the description is incomplete for safe and correct use. It lacks pagination semantics, return-value expectations, and any mention of rate limits or access requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning for the after, limit, or before parameters. An agent cannot infer how pagination works or what values these parameters expect from either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('audiences'), and adds the HTTP GET endpoint, making its intent unambiguous. It is clearly distinct from sibling tools like create_audience, get_audience, update_audience, and delete_audience, though it does not explicitly contrast with get_audience.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus get_audience or other listing tools, and no mention of pagination use cases or exclusions. The usage context is only implied by the word 'List,' providing no practical selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_automation_runsA
List an automation's runs (GET /automations/:id/runs). Filter with status (comma-separated: running,completed,failed,cancelled,skipped).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. | |
| after | No | ||
| limit | No | ||
| before | No | ||
| status | No | Comma-separated run statuses to include, e.g. 'running,completed'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It adds useful behavioral context — the GET verb implies a read-only operation and the status filter enumerates all allowed values (running,completed,failed,cancelled,skipped). However, it says nothing about pagination semantics for the after/before/limit parameters, cursor format, or default behavior, which is a significant omission for a listing endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the primary action is front-loaded, and the filter capability is stated immediately after. Both sentences earn their place and the status enum list is compactly integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite being a 5-parameter list operation with no annotations and no output schema, the description covers only the core call (id + status) and leaves after/before/limit entirely unexplained. An agent can make a basic filtered call but will likely misstep on pagination, ordering, or limit defaults, and has no description of the run objects returned. For a tool this complex, the definition is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40% (id and status described; after, limit, before undocumented). The description adds real value for the status parameter by listing the complete allowed vocabulary, which the schema example only partially conveys. But it provides zero meaning for after, before, and limit — an agent cannot tell whether these are cursors, timestamps, or counts — and at low coverage the description was expected to compensate more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — "List an automation's runs" — and pins the exact operation with the REST path GET /automations/:id/runs. This cleanly distinguishes it from siblings like list_automations (list automations) and get_automation_run (fetch a single run), even without explicit differentiation wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than stated: the endpoint path and 'an automation's runs' make clear you supply an automation id to retrieve its run history. However, there is no explicit when-to-use guidance, no named alternatives, and no exclusions (e.g., 'for a single run's detail, use get_automation_run'), so the agent must infer routing from the name and path alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_automationsC
List automations (GET /automations).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, but it only conveys 'List' and 'GET', implying a read-only operation. It does not disclose pagination behavior, ordering, authentication requirements, rate limits, or what data is returned, leaving meaningful behavioral traits undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, with no filler, but it is under-specified for a tool with three undocumented parameters. It is concise without being informative enough to be considered well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and zero parameter documentation, the description leaves important context uncovered, especially pagination semantics and what distinguishes this list call from related automation tools. It is adequate only for the most trivial interpretation of 'list automations'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 3 parameters with 0% description coverage, and the description does not mention any of them. 'after', 'limit', and 'before' are not explained; even their role as pagination controls is left entirely implicit, so the agent receives no semantic help beyond the parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('automations') and reinforces it with the HTTP endpoint GET /automations, so the core purpose is unambiguous. It does not explicitly distinguish this from siblings like list_automation_runs or get_automation, but the wording is clear enough for basic selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as get_automation or list_automation_runs. There is no mention of prerequisites, use cases, or exclusions; the agent must infer usage entirely from the tool name and endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsC
List campaigns (GET /campaigns).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'List' and includes the GET endpoint, which implies read-only behavior, but it does not mention pagination, ordering, authentication, rate limits, or whether the results are complete. The pagination-relevant parameters (after, before, limit) are not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler, and including the endpoint is useful. It is front-loaded and easy to parse, though it is minimal to the point of under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and opaque pagination parameters, the description is not complete. It leaves unanswered when to use this tool, how pagination works, and what the response contains. The low parameter coverage makes it insufficient for correct invocation in non-default cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the three optional parameters: after, limit, before. An agent cannot determine cursor semantics, value formats, or how parameters interact. The description adds no meaning beyond the raw parameter names in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('campaigns'), and also includes the HTTP endpoint 'GET /campaigns' to remove any ambiguity. It is clearly distinct from related sibling tools such as get_campaign or list_templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_campaign, get_campaign_stats, or list_polls. There is no mention of intended use cases, exclusions, or selection criteria relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contact_propertiesC
List contact properties (GET /contact-properties).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'List' implies a read-only operation, but the description does not confirm whether the operation is safe, idempotent, or affected by rate limits. It also does not disclose that the result set is likely paginated (indicated by the after/limit/before parameters) or how the parameters affect the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that front-loads the primary verb and resource. The inclusion of the HTTP endpoint is slightly redundant given the tool name, but it adds a useful protocol hint. No word is wasted, and it is appropriately sized for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and the parameter schema is 100% undocumented. The description only states the basic action, leaving out critical information about pagination, return format, and parameter usage. An agent attempting to call this tool would not know how to specify the optional parameters or interpret the response, making the definition inadequate for a tool with three parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention or explain any of the three parameters (after, limit, before). The parameter names suggest pagination, but the description provides no guidance on how to use them, leaving agents to guess their types and purposes. Full compensation would require describing the cursor mechanics, which is absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific verb 'List' and the resource 'contact properties', which clearly identifies the tool's function. The HTTP endpoint '(GET /contact-properties)' reinforces the action. It is distinguishable from sibling tools like get_contact_property, delete_contact_property, and create_contact_property based on the verb, though it does not explicitly differentiate itself in prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_contact_property (for a single property) or list_contacts (for contacts). It does not mention pagination semantics or that this is the correct endpoint for enumerating all properties. There is no explicit when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsC
List a sending domain's contacts (GET /contacts?domain=..., domain-first). Optional segment_id restricts to that segment's members.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| domain | Yes | The sending domain this resource belongs to (domain-first model), e.g. 'yourdomain.com' — one of your domains. | |
| segment_id | No | Restrict to members of this segment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions the GET endpoint and domain-first model, but does not disclose pagination behavior, response format, rate limits, or any side effects. For a list operation with after/before/limit parameters, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose and endpoint, with the segment restriction added as a secondary note. There is no wasted verbiage, though it could be more informative within the same length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with five parameters and no output schema or annotations, the description is too terse. It lacks explanation of pagination (after/before/limit), response structure, or any filtering beyond segment_id. The domain-first note is helpful but not sufficient for an agent to call it correctly without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 40% (only domain and segment_id have descriptions). The description only repeats the segment_id restriction and does not add any meaning for after, before, or limit. It fails to compensate for the undocumented parameters, leaving agents without guidance on how to paginate or control results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists contacts for a sending domain, with a specific verb ('List') and resource ('contacts'). It also gives the endpoint and mentions the optional segment restriction. It doesn't explicitly differentiate from sibling list_segment_contacts, but the domain-first focus makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: it can list all contacts for a domain, and with segment_id it restricts to a segment's members. However, it never explicitly tells the agent when to use this tool versus alternatives like list_segment_contacts or list_contact_segments. No exclusions or alternative names are provided, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contact_segmentsA
List the segments a contact belongs to (GET /contacts/:id/segments).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| contact_id | Yes | The contact id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. The explicit GET method signals a read-only operation, but the description does not disclose pagination semantics, ordering, or behavior when contact_id does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence plus endpoint; there is no filler and the key distinction is front-loaded. This is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a basic read call, and the output-return shape is not required since there is no output schema. However, with no annotations and undocumented pagination parameters, an agent lacks enough context to invoke it correctly in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, and the tool description adds no parameter details. contact_id is obvious from the endpoint and schema, but after, before, and limit are left entirely undocumented, forcing the agent to guess at pagination direction and limits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb, resource, and relationship: 'List the segments a contact belongs to'. This clearly distinguishes it from sibling tools like list_segments and list_segment_contacts, and the GET endpoint reinforces the exact scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the phrase 'a contact belongs to': use this when you need segments for one contact. However, no explicit guidance explains when to prefer this over list_segments or how it relates to other segment tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domainsB
List sender domains (GET /domains).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description's 'GET /domains' at least signals a read-only list operation. However, it does not disclose pagination behavior, authentication needs, or response characteristics, so the behavioral burden is only partially carried.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the operation and endpoint efficiently, which is appropriate for a simple listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There are no annotations, no output schema, and no parameter descriptions, so the description is too thin to fully support invocation. An agent can make a basic call, but cannot correctly use pagination or understand what the response contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for the three parameters (after, limit, before), and the description adds no parameter meaning. The description was the only place to explain these parameters, and it does not, leaving cursor pagination semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb and resource: 'List sender domains', and the parenthetical 'GET /domains' reinforces the exact operation. It is easily distinguished from sibling tools like get_domain or create_domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives, such as get_domain for a single domain or verify_domain for verification. It only states what the tool lists, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_email_attachmentsA
List a sent email's attachments (GET /emails/:id/attachments).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The email id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. The GET verb and 'List' wording imply a read-only operation, but the description does not state what the response contains, whether pagination exists, or what happens when the email has no attachments. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It includes the endpoint and the key scoping detail ('sent email') without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read operation with no annotations and no output schema, the core call is clear. However, the description does not explain what the returned attachment list contains or how it relates to get_email_attachment, so an agent cannot fully predict the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters but only describes id as 'The email id.' The tool description adds meaningful context by clarifying that the id is the sent email's id and mapping it to the endpoint path /emails/:id/attachments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a specific resource ('a sent email's attachments'), and the exact endpoint (GET /emails/:id/attachments). It clearly distinguishes this from siblings like list_received_email_attachments and get_email_attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'sent email's attachments' wording implies this is for sent emails rather than received ones, but it never explicitly says when to use this tool versus list_received_email_attachments or get_email_attachment. Usage context is implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emailsA
List sent emails with cursor pagination (GET /emails).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Cursor: return items after this id. | |
| limit | No | Max items to return. | |
| before | No | Cursor: return items before this id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It signals a read-only GET operation and adds cursor pagination behavior, which is meaningful. It does not detail response format, but 'list' and the verb imply a collection response, leaving no hidden side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single front-loaded sentence with no filler. It conveys the resource, scope, pagination behavior, and HTTP method in ten words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with three fully documented optional parameters, the description sufficiently covers the core invocation context. It could be more complete by naming the sibling for received emails or noting the return shape, but the lack of output schema and annotations is partly compensated by the clarity of 'list sent emails'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has an explanatory description in the schema. The description adds only the 'cursor pagination' context, which supplements but does not materially extend the schema's parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List sent emails') and includes the endpoint '(GET /emails)', which clearly distinguishes it from sibling tools like list_received_emails. An agent can identify exactly what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'sent emails' implies when to use this tool, but it does not explicitly name alternatives or conditions such as 'for received emails use list_received_emails'. Pagination guidance is present, but no when-not-to-use instructions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsB
List custom-event definitions (GET /events).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does add value by specifying 'GET /events', indicating a read-only operation and clarifying that it returns definitions rather than instances. However, it does not mention pagination behavior, ordering, permissions, or response complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the resource and endpoint with no filler. Every part contributes to understanding the tool's core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the sparse schema, lack of annotations, and no output schema, the description is too thin. It identifies the resource and method but fails to explain how the optional pagination parameters work or what the response looks like, so an agent may not call it correctly with non-default parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning to the three parameters: after, limit, and before. The agent is left to guess whether these are dates, cursors, offsets, or something else, with no compensating guidance in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List custom-event definitions' and includes the exact endpoint 'GET /events'. This clearly identifies what the tool does and distinguishes it from event-related siblings like send_event, create_event, update_event, and delete_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the name and resource type, but the description does not explicitly explain when to choose this over alternatives or mention any exclusions. There is no direct sibling for listing custom events, but no when-to-use guidance is provided either.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_logsC
List API request logs (GET /logs).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only states the listing action and endpoint, but does not explain pagination, sorting, filtering, or return format. The parameters after, before, and limit suggest pagination, but their semantics are not described. The description is too sparse to inform the agent about observable behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is efficient in length, but it is under-specified rather than concise. It lacks essential information about parameters and usage. The front-loading of the verb and resource is good, but the brevity results in a hollow definition that fails to provide necessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a list operation with three optional parameters, no output schema, and no annotations. The description provides only the action and endpoint, omitting any details about parameter usage, pagination, expected response structure, or edge cases. An agent would be unable to invoke this tool correctly without additional information. The description is grossly incomplete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema itself provides no parameter details. The description does not mention or explain the parameters 'after', 'before', or 'limit' at all. An agent cannot infer what these string and number fields represent (e.g., timestamps, cursors, or page size). The description adds zero semantic value beyond the schema's bare type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'API request logs', and includes the explicit endpoint '(GET /logs)'. This distinguishes it from the sibling get_log, which retrieves a single log. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The sibling get_log exists and would logically be for fetching a single log, but the description does not mention this distinction or any conditions for selecting one over the other. No exclusions or alternatives are noted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pollsC
List emails that have in-email poll responses, with per-email counts (GET /polls).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns emails with per-email counts, but does not specify pagination, sorting, or whether it mutates data. It also does not mention if it filters by poll type or if it only retrieves emails from received emails. Missing behavioral details like response format and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the core purpose, and is concise. No filler. However, it could include more helpful context without sacrificing conciseness. The structure is efficient, but the content is thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no annotations, and no output schema, the description is insufficient. It does not explain the parameters, return format, pagination, or how it relates to siblings like 'get_poll_results'. An agent would struggle to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 3 parameters (after, limit, before) with 0% description coverage, meaning the schema provides no meaning beyond types. The description does not explain the purpose or format of these parameters. 'after' and 'before' are likely date filters but unspecified. The description must compensate for the schema gap but does not, leaving parameters ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('emails that have in-email poll responses') with per-email counts, and includes the HTTP method (GET /polls). However, it does not distinguish this from the sibling 'get_poll_results' which may overlap in purpose. The verb and resource are clear, but the distinction from siblings is weak.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like 'get_poll_results' or 'list_emails'. It does not state any context, prerequisites, or exclusions. An agent would not know if this is for listing poll responses or for email digests. No sibling differentiation is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_received_email_attachmentsA
List a received email's attachments as metadata with download URLs (GET /emails/receiving/:id/attachments).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The received email id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly communicates that the tool returns metadata and download URLs rather than raw file content, and the GET method plus 'List' imply a non-mutating operation. It does not detail authentication, pagination, or error behavior, but for a simple listing tool the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the resource, action, return format, and endpoint with zero filler. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and no output schema, the description provides the necessary action, resource, endpoint, and return nature. It does not mention edge cases like empty attachment lists or URL expiry, but the information given is sufficient for an agent to select and invoke the tool correctly in the common case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single required parameter with 100% coverage, which sets a baseline of 3. The description adds useful semantic context by tying the id to the received email and embedding it in the endpoint, helping distinguish it from attachment-level ids used by sibling tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a specific resource ('a received email's attachments'), and the output form ('metadata with download URLs'). It is clearly distinguishable from siblings like list_email_attachments and get_received_email_attachment by the 'received' qualifier and the explicit endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'a received email's attachments' gives clear context for when this tool should be used, and the GET endpoint reinforces that it is a read-only listing operation. It does not explicitly name alternatives or exclusion criteria, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_received_emailsA
List inbound (received) emails with cursor pagination (GET /emails/receiving).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It mentions cursor pagination, a useful behavioral trait, and 'list' implies a read-only operation. However, it does not describe the return format, pagination token semantics, or any error/rate-limit behavior. It adds some value but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the primary purpose, includes the resource type, pagination mechanism, and endpoint. There is zero redundancy, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and zero parameter descriptions, the description is too sparse. It fails to explain the semantics of the three pagination parameters or what the response contains. An agent would need to guess API conventions, making this incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It introduces cursor pagination, which hints that 'after' and 'before' are pagination tokens, adding meaning beyond the bare schema. But it does not explicitly define each parameter's role, leaving ambiguity about cursor direction and ordering. It provides partial value but not complete clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists inbound (received) emails using a specific verb and resource, explicitly scoping to received messages. It also includes the endpoint (GET /emails/receiving), which distinguishes it from siblings like list_emails and get_received_email without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you need to list received emails. However, it does not explicitly state when to use this instead of alternatives such as list_emails or get_received_email, nor does it mention any exclusions. The context is clear but not explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_segment_contactsA
Preview the contacts a segment currently resolves to (GET /segments/:id/contacts).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The segment id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds a meaningful behavioral hint with 'currently resolves to', implying dynamic evaluation rather than a static stored list, and 'Preview'/GET implies read-only. But it does not mention pagination, response shape, or any limits, which are relevant for a list endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's scope and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read-only operation, the description is largely complete. The main gap is the lack of detail about the response format or pagination, but given the simplicity and the absence of an output schema, this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter id is plainly described as 'The segment id.' The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Preview') and resource ('contacts a segment currently resolves to'), which clearly distinguishes it from sibling tools like list_segments (lists segments) and list_contacts (lists all contacts). The endpoint reference reinforces the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose itself implies when to use it: to inspect the current contact membership of a particular segment. However, it does not explicitly name alternatives or state when not to use it (e.g., 'use list_contacts for all contacts'), leaving the routing mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_segmentsB
List a sending domain's segments (GET /segments?domain=...). Every domain includes an auto-created "General" (all contacts) segment.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| domain | Yes | The sending domain this resource belongs to (domain-first model), e.g. 'yourdomain.com' — one of your domains. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the burden of behavioral disclosure. It discloses that every domain has an auto-created 'General' segment, which is helpful. However, it does not mention pagination behavior, ordering, or whether the response includes full segment objects or just summaries. The description is not misleading, but it leaves key behavioral details undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is clear and front-loads the core purpose. The additional note about the 'General' segment is useful and does not add bloat. It is appropriately concise without being under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 params, no output schema), the description covers the primary use case but leaves out return format, pagination details, and parameters semantics for 'after', 'before', and 'limit'. The presence of sibling tools like list_segment_contacts suggests more context could be needed to avoid confusion. The description is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (25%): only 'domain' is described in the schema. The description adds context about the 'domain' parameter by framing it as a sending domain's segments, which reinforces its purpose. But it does not explain 'after', 'before', or 'limit' parameters, which are pagination controls; an agent would have to infer their meaning from common API conventions. The description provides marginal value but does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('List') and a clear resource ('a sending domain's segments'), which distinguishes it from segment-related mutation tools like create_segment, update_segment, and delete_segment. However, it does not explicitly differentiate from the read sibling list_segment_contacts, which could be confused with this tool if an agent is looking for segment contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the resource scope ('a sending domain's segments') and mentions the auto-created 'General' segment, which is useful context for when to call this tool. However, it does not provide guidance on when to use this tool versus alternatives like list_segment_contacts or get_segment, nor does it state any exclusions or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesC
List templates (GET /templates).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that this is a list/GET operation and reveals nothing about pagination, response shape, ordering, or side effects. It is not misleading, but it adds little beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Including the HTTP endpoint gives extra signal without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and three undocumented pagination parameters, this one-liner is under-specified. It conveys the basic operation but omits the pagination semantics and return-value expectations an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the tool description does not explain after, limit, or before. While 'limit' is reasonably self-evident, 'after' and 'before' could be cursors, timestamps, or other filters, leaving the agent unable to infer correct values confidently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List templates') and appends the HTTP endpoint. It is clearly an operation distinct from siblings like get_template or delete_template, although it does not explicitly call out those distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as get_template, list_polls, or other listing endpoints. The GET method suggests a read operation, but no exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsA
List a sending domain's subscription topics (GET /topics?domain=...).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| domain | Yes | The sending domain this resource belongs to (domain-first model), e.g. 'yourdomain.com' — one of your domains. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the HTTP method (GET) and the domain-first scoping, which signals a read-only operation, but it does not describe pagination behavior, ordering, or what fields are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, then adds the endpoint reference. There is no fluff or repetition; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool, the description plus schema is mostly adequate: the domain parameter is required and clear, and the tool's purpose is obvious. However, the lack of output schema and the unexplained optional pagination parameters leave some gaps for an agent that needs to call this correctly in non-trivial scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%: domain is documented, but after, limit, and before have no descriptions. The description itself only mentions the domain parameter and does not compensate for the undocumented pagination-related parameters, leaving their meaning and formatting ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List'), a resource ('sending domain's subscription topics'), and includes the exact endpoint, making it unmistakable what the tool does. It is also distinct from siblings like get_topic (single topic) and create_topic/update_topic/delete_topic (mutations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear the tool is for listing topics scoped to a sending domain, which implies it should be used when you need multiple topics for a domain. However, it does not explicitly contrast it with get_topic, create_topic, or other topic-related tools, leaving the when/when-not guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksC
List webhooks (GET /webhooks).
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the HTTP method and basic action, offering no information about pagination behavior, return shape, ordering, or whether the response contains sensitive webhook data. This is minimal and under-disclosing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, well-front-loaded, and contains no filler. It loses a point only because it is so terse that it adds little beyond the tool name, though the endpoint reference gives it some structural value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with three undocumented pagination parameters, no output schema, and no annotations, the description is too sparse. It does not explain how pagination works or what the response contains, leaving important invocation details to assumption.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate by explaining 'after', 'before', or 'limit'. The agent cannot infer cursor semantics, value formats, or constraints from either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'List webhooks', and the explicit endpoint 'GET /webhooks' reinforces the collection-level operation. It is not a tautology and is naturally distinguishable from the sibling get_webhook and webhook mutation tools, though it never names an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus get_webhook or other webhook tools. The intended use is weakly implied by the name and endpoint, but there is no explicit context, prerequisite, or alternative-selection advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_templateA
Publish a template, making its latest draft live (POST /templates/:id/publish).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The template id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core state change (the latest draft becomes live) and the HTTP method POST indicates a mutating operation. However, it does not mention side effects like overwriting the current live version, whether a draft must exist, reversibility, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence states the purpose and effect, with the endpoint in parentheses as supplementary context. There is no redundancy or irrelevant detail, so every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one required parameter, no output schema), the description is largely sufficient: it specifies what happens and to what resource. It does not address edge cases like publishing without a draft or the response format, but these are not essential for correct tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the only parameter ('id' as 'The template id.'), with 100% schema description coverage. The description adds no further meaning about the parameter beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Publish') and resource ('template'), and clarifies the effect: 'making its latest draft live.' This clearly distinguishes it from sibling template operations like update_template, duplicate_template, and delete_template, and the included endpoint further pins down the exact action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool: when you want to make a template's latest draft live. It does not explicitly mention alternatives or exclusions, but the publish action is distinct from the other template-related sibling tools, so the intended use is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_contact_from_segmentA
Remove a contact from a segment (DELETE /contacts/:id/segments/:segmentId).
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact id. | |
| segment_id | Yes | The segment id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It explicitly reveals the destructive HTTP method (DELETE), which signals mutation, but it does not disclose idempotency, behavior when the membership does not exist, permissions, or response semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence conveys the action, resource, and HTTP method without redundancy. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter removal operation with fully documented parameters, the description is largely complete. Minor omissions around side effects and response behavior prevent a 5, but an agent can likely invoke this tool correctly based on the provided text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters already documented as 'The contact id' and 'The segment id.' The description adds no extra parameter meaning beyond the endpoint path, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Remove'), a specific resource ('contact from a segment'), and the exact HTTP endpoint. This clearly differentiates it from sibling tools like add_contact_to_segment and list_contact_segments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Remove' and endpoint pattern imply this tool is for severing a contact-segment membership, but the description does not explicitly state when to prefer it over alternatives or what conditions apply. Sibling tools exist for adding or listing segment memberships, but no routing guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_received_emailA
Reply to a received email's sender, threaded into the same conversation (POST /emails/receiving/:id/reply). from must be on a verified domain.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The received email id. | |
| from | Yes | A verified sending address. | |
| html | No | ||
| text | No | ||
| subject | No | Optional; defaults to Re: <received subject>. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds useful behavioral context by noting the reply is 'threaded into the same conversation' and that the `from` address must be on a verified domain. However, it does not disclose side effects (e.g., whether the received email is marked as replied), authentication requirements, or any consequences beyond sending the reply. Given the absence of annotations, a more thorough behavioral description would be expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and threading behavior, followed by the prerequisite constraint. Every word earns its place; the endpoint reference is parenthetical and non-intrusive. It is both concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reply tool with no output schema, the description covers the primary purpose and a key constraint. However, it leaves ambiguity about whether `html` or `text` must be provided (or if both are optional), and it does not mention what the response contains. Sibling tools like forward_received_email are not explicitly contrasted, which could lead to selection uncertainty in complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents `id`, `from`, and `subject` (60% coverage). The description adds only the constraint that `from` must be on a verified domain, which is redundant with the schema's 'verified sending address' description. It does not clarify the relationship between `html` and `text` (e.g., whether at least one is required) or add semantics for those parameters. With moderate schema coverage, the description's contribution is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Reply to a received email's sender') and the resource (received email), and distinguishes it from siblings like forward_received_email and get_received_email. The mention of 'threaded into the same conversation' adds a specific behavioral nuance that further differentiates it from a fresh email send.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is a reply operation threaded into the existing conversation, and it requires the `from` address to be on a verified domain. It does not explicitly name sibling alternatives (e.g., forward_received_email) or state when NOT to use it, but the action is unambiguous enough that an agent can infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_emailA
Retrieve a sent email and its events by id (GET /emails/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The email id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It clearly indicates a read-only operation via 'Retrieve' and 'GET', and it discloses that events are included in the result. It does not detail error handling or response structure, but for a simple GET by id this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler. It efficiently front-loads the verb, resource, scope, and HTTP method, making the purpose immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter GET with no output schema, the description sufficiently states what is returned (the email and its events). It could elaborate on what 'events' means, but this is a minor gap for a tool of this simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully documents the id parameter. The description's 'by id' adds no new meaning beyond what is already known, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Retrieve a sent email and its events by id' precisely states the action and target. It differentiates from sibling tools like get_received_email by explicitly scoping to 'sent email', and the endpoint GET /emails/:id reinforces the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for sent emails by saying 'sent email', which distinguishes it from received-email siblings, but it does not explicitly name alternatives or state when not to use it. Guidance is present but only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rotate_webhook_secretA
Rotate a webhook signing secret (POST /webhooks/:id/rotate). The new secret is returned ONCE; the old secret stops verifying immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The webhook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses two critical traits: the new secret is returned exactly oncechers, and the old secret stops verifying immediately. This conveys the irreversible, high-impact nature of the operation well, though it could also mention permissions or an explicit 'cannot be undone' warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The action is front-loaded, the endpoint is included for precision, and the second sentence adds the most operationally important caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description is complete: it says what happens, what the caller receives, and the immediate consequence. The critical one-time-only availability of the secret is explicitly stated, which is exactly what an agent needs to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter, id, is already described as 'The webhook id.' The description adds no extra meaning to the parameter beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Rotate') and resource ('webhook signing secret') and even gives the exact endpoint. This clearly distinguishes it from sibling tools like update_webhook, verify_webhook_signature, and test_webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool is for rotating a webhook signing secretholistically, and the behavioral consequences of rotation are stated. It doesn't explicitly name alternatives or exclusion conditions, but the unique action and endpoint make the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_batch_emailsA
Send up to 100 emails in one request (POST /emails/batch). Pass an array of email objects, each with from/to/subject and html and/or text. Per-email "from" defaults to the configured sender if omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | Array of email objects (max 100). Each: from, to, subject, html/text, plus optional cc/bcc/reply_to/scheduled_at/tags/headers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses the batch limit, the HTTP endpoint, and the per-email 'from' defaulting behavior. However, it does not mention side effects beyond sending, partial failure behavior, idempotency, or rate-limit implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler. The most important facts are front-loaded: the action, the batch limit, and the endpoint come first, followed by payload structure and a useful default behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with a well-described schema, the description covers the essentials: endpoint, payload shape, limit, and default behavior. A response/error-behavior note would improve completeness, but an agent has enough to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3. The description adds valuable semantics beyond the schema by clarifying that each email should include from/to/subject and html and/or text, and by explaining the 'from' default when omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Send'), a clear resource ('up to 100 emails in one request'), and the endpoint (POST /emails/batch). This distinguishes it from send_email and other sibling tools without needing to inspect the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The batch context is clear: this tool is for sending multiple emails in one request, with an explicit cap of 100. It does not explicitly mention when not to use it or point to send_email as the single-email alternative, but the usage context is unambiguous enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_campaignA
Send a campaign now, or schedule it with scheduled_at (POST /campaigns/:id/send).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The campaign id. | |
| scheduled_at | No | Optional ISO 8601 / natural-language schedule time. Omit to send now. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the transparency burden. It does disclose the key behavioral distinction between sending now and scheduling, and it provides the HTTP endpoint, but it does not mention whether sending is irreversible, whether it can be triggered more than once, or whether scheduled_at must be in the future. This is adequate but lacks deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one tightly worded sentence that front-loads the action and optional scheduling behavior, then adds the endpoint. There is no filler or unnecessary repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with one required string parameter and one optional timestamp, the description plus the fully documented schema are sufficient for an agent to invoke it correctly. It does not describe return values or error cases, but those are minor omissions given the absence of an output schema and the otherwise clear semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents both parameters, including the fact that omitting scheduled_at sends now, so the description adds no new meaning beyond the structured schema. With 100% schema description coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the action verb ('send'), the resource ('a campaign'), and the two modes: immediately or scheduled. It also includes the endpoint, which makes the tool's function unambiguous even among campaign lifecycle siblings like cancel_campaign or update_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use this tool for sending a campaign now or later, but it does not explicitly compare against alternatives such as send_email or send_batch_emails, nor does it state when not to use it. The usage context is implied by the resource name rather than explicitly differentiated from similar sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailA
Send a single email through SendHustle (POST /emails). Supports HTML and/or plain text, CC/BCC, reply-to, scheduling, attachments, tags, and custom headers. The "from" address must be on a verified domain; if omitted, the server default sender is used.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ||
| to | Yes | Recipient address(es), max 50. | |
| bcc | No | ||
| from | No | Sender, e.g. "Acme <hi@yourdomain.com>". Defaults to the configured sender. | |
| html | No | HTML body (provide html and/or text). | |
| tags | No | Key/value tags for tracking. | |
| text | No | Plain-text body (provide html and/or text). | |
| headers | No | Custom email headers. | |
| subject | Yes | Subject line. | |
| reply_to | No | Reply-to address(es). | |
| attachments | No | File attachments. | |
| scheduled_at | No | ISO 8601 timestamp or natural language (e.g. "in 1 hour"). | |
| idempotency_key | No | Idempotency-Key header to prevent duplicate sends. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It reveals key operational constraints: the from address must be on a verified domain, and an omitted from falls back to the server default sender. These are genuinely useful, non-obvious behaviors beyond the schema, though it does not mention what response is returned or failure consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The primary action and endpoint are front-loaded, followed by a compact capability list, and the most important prerequisite (verified domain) is stated clearly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a send action with no output schema, the description covers the core operation, supported content types, key delivery options, and a domain-verification prerequisite. It is slightly thin on post-send behavior or return value, but given the rich schema descriptions and the tool's straightforward purpose, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 85%, so the schema already documents most parameters. The description summarizes the feature set (HTML/text, CC/BCC, reply-to, scheduling, attachments, tags, headers) and adds important meaning about the from behavior, but it does not need to restate each parameter. It adds some value without fully compensating for the undocumented portions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Send a single email through SendHustle (POST /emails)' — and explicitly scopes it to a single email, distinguishing it from the sibling send_batch_emails. It also enumerates the supported capabilities, so an agent can clearly understand what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'single email' provides clear context for when this tool is appropriate versus batch sending, but it does not explicitly name send_batch_emails or state when not to use it. It gives good usage context without formal exclusion or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_eventA
Send a custom event that automations can trigger on (POST /events/send). domain is required — only automations belonging to that sending domain are triggered. Identify the contact by contact_id OR email.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Arbitrary event payload. | |
| name | Yes | The custom event name automations trigger on. | |
| No | Identify the contact by email (or use contact_id). | ||
| domain | Yes | The sending domain this event belongs to (one of the account's domains). Required — only that domain's automations fire. | |
| contact_id | No | Identify the contact by id (or use email). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It discloses the domain scoping and contact identification methods, adding value beyond the schema. However, it does not address failure modes, return values, or what happens if both contact identifiers are provided, leaving notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the purpose stated first, followed by the key constraint. No filler or redundancy, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior and domain constraint, but leaves ambiguity about whether a contact identifier is required and what happens if both or neither are provided. Given the rich schema and no output schema, the description is mostly complete but has minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description reiterates the domain requirement and contact identification but adds no new semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (send) and resource (custom event), and explains its purpose: triggering automations. It also includes the HTTP endpoint, which distinguishes it from sibling tools like create_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to trigger automations) but does not explicitly mention when not to use it or name alternative tools. The purpose is clear enough for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_automationA
Stop an automation — prevents new runs; in-progress runs finish (POST /automations/:id/stop).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the key behavioral trait: stopping prevents new runs but lets in-progress runs finish. It also reveals the HTTP endpoint (POST /automations/:id/stop), which is useful context. It does not mention idempotency, reversibility, or whether stopping an already-stopped automation errors, but for a simple stop action the core behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and effect, with the endpoint appended as a useful reference. Every word earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description is nearly complete. It explains the action, the scope (new vs in-progress runs), and the endpoint. The only missing context is what the response looks like and whether the operation is reversible, but those are minor for a simple stop action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the only parameter, id, is described as 'The automation id.' The description adds no additional parameter-level meaning beyond the schema, but none is needed for a single simple parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Stop'), a resource ('an automation'), and the precise effect ('prevents new runs; in-progress runs finish'). It also includes the underlying API endpoint, which disambiguates it from sibling tools like update_automation or delete_automation. This is a clear, non-tautological definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you want to stop an automation without killing in-progress runs. It does not explicitly name alternatives or exclusions, but the behavioral distinction from delete_automation and update_automation is clear enough from the stated semantics. A small gap is not saying 'use delete_automation to remove it permanently' or 'use update_automation to change settings instead'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_webhookA
Send a synchronous test delivery and return the endpoint's live result (POST /webhooks/:id/test).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The webhook id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It states the action ('send a synchronous test delivery') and the return behavior ('return the endpoint's live result'). This covers the core behavior. It does not mention potential side effects like triggering integrations, but for a test action this is likely acceptable. The description is transparent about synchronicity and the returned live result, which is strong for a simple one-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action ('Send a synchronous test delivery') and includes the HTTP route, which adds useful context without bloat. Every word earns its place, and it's easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description adequately covers essentials: what it does (send test) and what it returns (live result). It could specifiy the return format (e.g., status code, body) but for a webhook test the phrase 'live result' is likely sufficient. The description is complete enough for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the parameter 'id' described as 'The webhook id.' The description does not add any additional meaning beyond the schema, which is fine because the schema already suffices. Baseline 3 is appropriate since the description doesn't enhance parameter understanding but also doesn't need to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Send'), resource ('endpoint'), and action ('synchronous test delivery'), and includes the HTTP method/path (POST /webhooks/:id/test). This clearly distinguishes it from sibling webhook tools like get_webhook (retrieves config) or delete_webhook (removes), leaving no ambiguity about its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use: when you need to send a test webhook and get its live result. No explicit exclusion of alternatives, but there is no other sibling that performs this action. The context is clear, and the description includes the synchronous nature, which helps set expectations. A minor gap is not explicitly stating that this actually triggers an event to the endpoint, though that is implied by 'test delivery'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_audienceB
Rename an audience (PATCH /audiences/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The audience id. | |
| name | Yes | The new audience name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only indicates a PATCH request, implying mutation, but does not mention permissions, side effects, idempotency, or error behavior. This is a significant gap for a modification tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no extraneous words. It efficiently conveys the action and resource without any waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotations, the description is too sparse. It omits information about the effect on existing audience attributes, potential errors, or the return value, leaving the agent without full context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters (id and name), and the description adds no further meaning beyond what the schema already states. Baseline 3 is appropriate since the schema sufficiently documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Rename') and resource ('audience') with an explicit endpoint (PATCH /audiences/:id). It clearly distinguishes this tool from sibling tools like update_segment or get_audience by specifying the exact action and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for renaming an audience but gives no explicit context, prerequisites, or alternatives. It does not say when to prefer this over another tool or when not to use it, leaving the agent to infer the intended scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_automationA
Update an automation's name, status, domain, or connection graph (PATCH /automations/:id). Enabling requires at least one step; editing connections or the domain requires the automation to be disabled.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. | |
| name | No | ||
| domain | No | Re-point the automation at another of the account's sending domains (disabled automations only). | |
| status | No | ||
| connections | No | Replacement typed edges between step keys; each { from, to, type? }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the key behavioral constraints (disabled state requirement, step requirement for enabling) and implies PATCH semantics. It could mention permissions or side effects, but the main gotchas are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff: the first states the operation and scope, the second lists the critical constraints. Information is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no annotations or output schema, the description covers the essential preconditions and operation. It doesn't describe the return value or authorization requirements, but the schema handles parameter details, leaving only minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, leaving name and status undocumented (though status has an enum). The description adds meaning by linking domain and connection edits to the disabled state and status changes to the step prerequisite, providing context the schema alone does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') with a resource ('automation') and enumerates the exact updatable fields (name, status, domain, connection graph), plus the HTTP method and path. This clearly distinguishes it from sibling tools like update_automation_step and stop_automation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit conditions: enabling requires at least one step, and editing connections or the domain requires the automation to be disabled. It doesn't name alternative tools, but these prerequisites give clear context for when the operation is valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_automation_stepA
Update a step in place (PATCH /automations/:id/steps/:stepId). The graph key stays stable, so connections keep pointing at it. Disable the automation first if it is enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The automation id. | |
| type | Yes | Step type, e.g. 'send_email', 'wait', 'condition'. | |
| config | No | Replacement step configuration. | |
| step_id | Yes | The step id to update. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the update is in-place (graph key stays stable, connections keep pointing) and includes the crucial prerequisite of disabling the automation first. This exceeds the minimum and provides actionable operational guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all meaningful. The purpose is immediately clear, and the operational warning is front-loaded. No filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a relatively simple update operation with full schema coverage and no output schema, the description covers the essential context: what is updated, the stability guarantee, and the required pre-condition. Missing is information about return value or what happens on failure, but that is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters, but the description adds meaning by clarifying that 'config' is a full replacement object and that 'step_id' is the identifier for the step being updated. The HTTP method and path are also given, which helps an agent understand the operation semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update a step in place'), the resource (a specific step within an automation), and the HTTP verb/method (PATCH). It also distinguishes this from sibling operations like add_automation_step and delete_automation_step by focusing on in-place update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context: it's for updating an existing step, and it provides a key usage warning ('Disable the automation first if it is enabled'). It doesn't explicitly mention when to use it versus other step-management 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.
update_campaignB
Update a draft campaign's content or targeting (PATCH /campaigns/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The campaign id. | |
| from | No | ||
| html | No | ||
| name | No | ||
| text | No | ||
| ab_test | No | Update the A/B-test config. | |
| subject | No | ||
| reply_to | No | ||
| topic_id | No | Re-target a topic gate (pass null to clear). | |
| recurrence | No | Update the recurrence cadence. | |
| segment_id | No | Re-target a segment (pass null to clear). | |
| audience_id | No | ||
| preview_text | No | ||
| recurrence_every | No | Periods between recurring sends (1-365). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the operation is a PATCH (partial update), which implies non-destructive merging, but it doesn't disclose whether updating a non-draft fails, whether certain fields are immutable after send, or what the response contains. For a mutation tool with 14 parameters, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the verb, resource, and scope, and includes the HTTP method/path. It is efficient and free of fluff, though it could have used the space to add behavioral or parameter context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter mutation tool with no annotations and no output schema, the description is too thin. It doesn't explain the draft-only constraint's enforcement, whether null clears fields (though some schema descriptions hint at this), or what the response looks like. An agent would need to open the schema and guess at behavior for the many undocumented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 43%, so the schema documents some parameters (id, ab_test, topic_id, recurrence, segment_id, recurrence_every) but leaves 8 parameters (from, html, name, text, subject, reply_to, audience_id, preview_text) with no description. The tool description adds no parameter-level meaning beyond 'content or targeting', so it doesn't compensate for the coverage gap. Baseline 3 is appropriate since the schema does partial work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update'), a resource ('a draft campaign'), and the scope ('content or targeting'), and includes the HTTP method/path (PATCH /campaigns/:id) which adds precision. It distinguishes from siblings like create_campaign, send_campaign, and cancel_campaign, though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for draft campaigns only, which is a clear usage constraint. However, it doesn't explicitly say when to use this vs alternatives like update_email or update_automation, nor does it mention that only drafts can be updated or what happens if a non-draft is targeted. The draft restriction is useful but not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactA
Update a contact by id or email (PATCH /contacts/:id). Pass domain when addressing by EMAIL (picks the pool).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The contact id OR email address. | |
| domain | No | Disambiguates an EMAIL id across domains (omit for a contact id). | |
| last_name | No | ||
| first_name | No | ||
| properties | No | Custom contact properties. | |
| unsubscribed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It mentions PATCH, implying a partial update, but does not explain what happens if the contact is not found, how email ambiguity is resolved, or how the `properties` object merges with existing custom properties. It also omits idempotency, error handling, and response shape, leaving critical behavior undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, front-loaded with the primary purpose and the critical email/domain rule. Every word earns its place, with no redundancy or filler. The structure makes it easy to scan and extract the key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotations, the description is incomplete. It does not mention what the response contains, error scenarios (e.g., invalid id, ambiguous email), or whether the update is partial (only provided fields). It also fails to clarify that `properties` refers to custom contact properties, which could lead to misuse. Given the tool's complexity (6 parameters, nested object), the description leaves too much to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for `id` (can be an email) and `domain` (disambiguates email across pools), which directly aids correct usage. Schema descriptions already cover these two parameters. For the remaining parameters (last_name, first_name, properties, unsubscribed), the names are self-explanatory but the description does not elaborate on their semantics or update behavior. Given the 50% schema coverage, the description partially compensates but leaves gaps for the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Update), the resource (a contact), and the addressing methods (id or email). It also specifies the HTTP method (PATCH) and implicitly differentiates from sibling tools like get_contact and delete_contact by focusing on the update operation. The mention of 'picks the pool' for email adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a direct usage rule: pass `domain` when addressing by email, which is essential for correct invocation. However, it does not explicitly compare this tool to alternatives like update_contact_property or explain when to prefer this over other contact-related tools. The guidance is clear for the addressing method but lacks broader selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contact_propertyA
Update a contact property's fallback value (PATCH /contact-properties/:id). key/type are immutable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The contact property id. | |
| fallback_value | No | New default value (pass null to clear). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must disclose behavior. It clearly states the operation (PATCH update) and the immutability constraint, which is valuable. However, it does not disclose potential side effects (e.g., overwriting existing values), required authentication/permissions, or what happens if the property does not exist. The description meets the baseline but leaves notable gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one tight sentence that front-loads the action, resource, and field, with the HTTP method in parentheses and the immutable constraint appended. There is zero filler, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter PATCH tool with no output schema and no annotations, the description is nearly sufficient: it tells the agent what to update, that key/type cannot be changed, and the HTTP endpoint. It could additionally mention error conditions or ownership requirements, but for the tool's simplicity, these are minor omissions. A score of 4 reflects the high signal-to-noise ratio.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both 'id' and 'fallback_value' are already documented in the schema, including the 'pass null to clear' behavior. The description adds little parameter-specific meaning beyond the HTTP method and immutability constraint, which are contextual rather than semantic. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update'), a specific resource ('a contact property's fallback value'), and even includes the HTTP method (PATCH /contact-properties/:id). It clearly distinguishes this from create/delete/get/list contact property tools by noting key/type are immutable, so an agent can identify its scope without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives implied usage context: it is for updating the fallback value, and key/type cannot be changed here. However, it never explicitly names the alternative (e.g., 'use create_contact_property to set key/type') or states when this tool should not be used. The immutability note implies the boundary but stops short of clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contact_topicsA
Update a contact's topic subscriptions (PATCH /contacts/:id/topics). Provide topics as an array of { id, subscription: 'opt_in' | 'opt_out' }.
| Name | Required | Description | Default |
|---|---|---|---|
| topics | Yes | Subscriptions to set. Each: { id, subscription: 'opt_in' | 'opt_out' }. | |
| contact_id | Yes | The contact id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that this is a PATCH (partial update) operation and that topics are 'subscriptions to set', implying replacement of topic subscription values. It does not clarify whether the provided array fully replaces all subscriptions or only updates the listed topic IDs, nor any side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the operation and endpoint, followed immediately by the payload format. No filler or repetition beyond the essential pattern.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with no output schema, the description is largely complete: it identifies the endpoint, HTTP method, required parameters, and the array item structure. The only notable omission is the replace-vs-merge semantics for the topics array, which is not essential for a basic call but would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both contact_id and topics fully described. The description echoes the items shape, adding no meaning beyond the schema. The inclusion of the enum values in context is minor redundancy rather than added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact operation ('Update a contact's topic subscriptions') and even includes the endpoint and HTTP method (PATCH /contacts/:id/topics). This clearly distinguishes it from the sibling 'get_contact_topics' read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states what the tool does but provides no explicit guidance on when to choose it over alternatives or when not to use it. The usage is implied by the verb 'Update', and the sibling get_contact_topics exists but is never referenced, so the guidance is adequate but not instructive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_domainB
Update a domain's tracking/TLS/capabilities settings (PATCH /domains/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. | |
| tls | No | Outbound TLS policy. | |
| capabilities | No | e.g. { "receiving": "enabled" }. | |
| open_tracking | No | ||
| click_tracking | No | ||
| tracking_subdomain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It only mentions PATCH, hinting at partial update semantics, but does not disclose whether unspecified settings are preserved, whether domain verification is required before changing TLS/capabilities, permissions, side effects, or the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that includes the action, resource, settings scope, and HTTP method. No filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 6-parameter mutation tool with a nested object, no output schema, and no annotations, yet the description provides only one sentence. Missing behavioral guidance, clarification of three undocumented parameters, and any sense of prerequisites or return values makes it insufficient for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with open_tracking, click_tracking, and tracking_subdomain lacking schema descriptions. The phrase 'tracking/TLS/capabilities settings' groups the payload fields and adds some semantic layer, but it does not explain the undefined booleans/string or the capabilities object beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Update'), resource ('domain'), and scope ('tracking/TLS/capabilities settings'), with the PATCH endpoint further anchoring it. This clearly differentiates it from read-only siblings like get_domain and list_domains, and from delete_domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or alternatives. The description implies 'use this when updating domain settings', but it does not direct the agent to get_domain/list_domains for reads or verify_domain/check_domain_mx for validation. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_emailA
Reschedule a scheduled email by setting a new send time (PATCH /emails/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The email id. | |
| scheduled_at | Yes | New ISO 8601 timestamp (or natural language) to send at. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core mutation (setting a new send time) and implies a PATCH operation, but it does not mention prerequisites (e.g., the email must still be scheduled), reversibility, or any side effects. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero filler. It states the action, the target, and the HTTP method efficiently, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with no output schema, the description covers the essential call requirements. It does not mention edge cases (e.g., what happens if the email is already sent), but for a straightforward PATCH it is largely sufficient. A slightly more explicit note about preconditions would make it a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes both parameters fully (id and scheduled_at with its format). The description adds no additional semantics beyond restating that scheduled_at sets the new send time. With 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Reschedule') and resource ('a scheduled email'), plus the HTTP method (PATCH). This clearly distinguishes it from siblings like cancel_email (which cancels) and send_email (which sends a new email). An agent can immediately understand the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the use case: changing the send time of an already scheduled email. It does not explicitly exclude other scenarios or name alternatives like cancel_email, but the context is unambiguous. It lacks explicit 'when not to use' guidance, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_eventA
Update a custom-event definition's payload schema (PATCH /events/:id). The event NAME is immutable (renaming would detach automations that reference it) — create a new event to rename. Pass schema as a flat key→type map, or null to clear it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The event definition id. | |
| schema | No | Flat key→type map, e.g. { plan: 'string' }, or null to clear. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses a non-obvious consequence (renaming would detach automations) and the ability to clear the schema with null. With no annotations available, the description carries the behavioral burden and does so adequately, though response behavior and effects on existing events are not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, leading with the core purpose then the constraint and parameter usage. Every clause earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool, the description covers the purpose, the key invariant, and the parameter semantics. The immutability warning is critical and included, so nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the input schema (100% coverage), so the description need not add much. It does restate the schema semantics ('flat key→type map' and null-to-clear) but adds no new information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action: 'Update a custom-event definition's payload schema', with the HTTP method and resource. This clearly identifies the operation and distinguishes it from sibling tools like create_event, delete_event, and send_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly warns that the event NAME is immutable and names the alternative: 'create a new event to rename.' It also specifies when passing null as schema is appropriate, giving an agent a clear decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_segmentA
Update a segment's name or filter (PATCH /segments/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The segment id. | |
| name | No | ||
| filter | No | e.g. { status: 'unsubscribed', property_filters: [{ key, operator, value? }] }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It conveys that the operation is a PATCH mutation, but it does not disclose possible side effects—for example, updating a filter may recompute segment membership and remove contacts—nor does it describe return behavior or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the action and fields, and the appended PATCH path adds useful implementation context without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally viable for a simple partial update, but meaningful gaps remain: no mention of return values, no guidance on what happens when a filter update changes segment membership, and no side-effect warnings. With no output schema and no annotations, more context would make the tool safer to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; the description aligns 'name or filter' with the optional properties and clarifies id as the path parameter. It adds little beyond the schema, and the filter object semantics are left mostly to the schema example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource ('segment') and the exact updatable fields ('name or filter'), and includes the HTTP method and path (PATCH /segments/:id). This distinguishes it from sibling tools like create_segment, get_segment, and delete_segment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: update a segment's name or filter. However, it does not explicitly contrast with create/delete/list segments or state any prerequisites or conditions for when this tool should be chosen over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_templateC
Update a template (PATCH /templates/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The template id. | |
| from | No | ||
| html | No | ||
| name | No | ||
| text | No | ||
| alias | No | ||
| subject | No | ||
| reply_to | No | ||
| variables | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The PATCH notation hints at partial-update semantics (only supplied fields change), which is genuine value, but nothing is said about side effects, whether changes affect a draft vs. published state, required permissions, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler words; the verb and endpoint appear immediately. However, the brevity is partly a symptom of under-specification — the same sentence could have carried far more behavioral and parameter context without added length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with 9 parameters, no annotations, no output schema, and 11% schema coverage, this description is radically insufficient. An agent cannot tell what the editable fields mean, whether updating affects published templates, or how this differs from publish_template and duplicate_template in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% — only 'id' is documented in the schema, leaving 8 parameters (from, html, name, text, alias, subject, reply_to, variables) completely unexplained. The tool description does nothing to compensate: it mentions no parameters, their meanings, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Update') and resource ('a template') and reinforces it with the PATCH /templates/:id endpoint, which also signals partial-update semantics. This is enough to tell it apart from siblings like create_template, get_template, duplicate_template, publish_template, and delete_template, though it does not explicitly contrast with publish_template or duplicate_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to update a template versus duplicate it, publish it, or create a new one. There are no prerequisites mentioned (e.g., that the template must already exist), no conditions that make updating preferable, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_topicC
Update a topic (PATCH /topics/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The topic id. | |
| name | No | ||
| visibility | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden of behavioral disclosure. It indicates a mutation via 'update' and 'PATCH', implying a partial update, but does not specify idempotency, permission requirements, or what happens to unspecified fields. This is a significant gap for an update operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core action. It is not verbose, but it is so minimal that it sacrifices necessary detail. It earns points for clarity and brevity, though it could include more context without becoming unwieldy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four parameters, no annotations, and no output schema, this description is inadequate. It fails to explain return values, required fields beyond 'id', or any operational nuances. An agent would need to guess at the behavior of the other fields and the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only 'id' has a description). The description adds no information about the parameters 'name', 'visibility', or 'description', leaving them entirely undocumented. With low schema coverage, the description should compensate, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update'), the resource ('a topic'), and even specifies the HTTP method and path (PATCH /topics/:id). This distinguishes it from sibling tools like create_topic and delete_topic without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites or conditions for usage. The context of 'update' is implied by the name, but there is no explicit discussion of when it is appropriate or when to prefer another tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_webhookB
Update a webhook's endpoint, events, or status (PATCH /webhooks/:id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The webhook id. | |
| events | No | ||
| status | No | ||
| endpoint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It discloses PATCH semantics (partial update) but omits whether omitted fields are unchanged, whether updates are idempotent, permission requirements, or side effects. The mutation is implied but not elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the operation and resource, with the HTTP method parenthetical adding clarity with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, this is under-specified. Missing return value, error behavior, and any prerequisites. The HTTP method and field list are helpful but do not cover the full calling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only 'id' documented). The description names the three updatable fields ('endpoint, events, or status') but adds no details about their formats, constraints, or behavior (e.g., what events array entries look like, what status values are valid). It does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update'), resource ('webhook'), and the affected fields ('endpoint, events, or status'), clearly distinguishing it from other webhook tools like create/delete/get. The HTTP method parenthetical reinforces the mutation intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when modifying an existing webhook's configuration, but provides no explicit when-not-to-use or alternatives. The PATCH method hints at partial updates, but there is no guidance on choosing between this and other webhook operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_domainA
Trigger verification of a domain after its DNS records are in place (POST /domains/:id/verify).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that this is a POST action that triggers verification, but it does not explain what happens after triggering, whether verification is asynchronous, what failures may occur, or what the response represents. For an action-style tool, more behavioral detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and timing, with the endpoint included parenthetically. Every part earns its place, and there is no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter trigger with no output schemaiving, the description is largely complete: it names the action, the precondition, and the endpoint. It could be improved by noting whether verification is asynchronous and what the caller should expect in the response, but those are not critical for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'id' is fully documented in the schema with 'The domain id.' The description does not add meaningful parameter-level detail beyond that, but because schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('trigger verification') and the resource ('a domain'), and adds a timing condition. It does not explicitly distinguish itself from the similar sibling 'verify_domain_claim', so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool: after DNS records are in place. It does not explicitly name alternatives or exclusions, but the condition is specific enough to guide an agent toward the correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_domain_claimA
Trigger DNS verification for a pending domain claim (POST /domains/:id/claim/verify).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the core behavior: a state-changing POST that triggers DNS verification. However, it does not say whether the operation is idempotent, what it returns, or what happens if the claim is already verified or not pending.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence front-loads the action and resource, with the endpoint parenthetically for precision. There is no filler or redundant restatement of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-required-parameter trigger with no output schema, the description provides the essential invocation details: action, endpoint, and precondition. It falls slightly short of full completeness because it does not mention how to confirm the verification result, especially since there is no output schema or annotation guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter, id, as 'The domain id' with 100% coverage. The description's URL path confirms id is the domain id but adds no further meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Trigger') and a specific resource ('DNS verification for a pending domain claim'), then reinforces it with the exact endpoint. This clearly distinguishes it from sibling tools like verify_domain and get_domain_claim by scoping the action to pending claims.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the precondition ('pending domain claim') and frames the action as a trigger, so an agent knows this is not for general domain verification or for creating claims. It does not name alternative tools for checking claim status or initiating a claim, which prevents a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_webhook_signatureA
Locally verify a webhook delivery's Svix-style signature (no API call). Provide the exact raw request body, the svix-id/svix-timestamp/svix-signature headers, and your endpoint signing secret. Returns { valid, reason? }.
| Name | Required | Description | Default |
|---|---|---|---|
| secret | Yes | The endpoint signing secret (whsec_... or raw). | |
| payload | Yes | The exact raw request body the server sent (do not re-serialize). | |
| svix_id | Yes | The svix-id header. | |
| tolerance_sec | No | Max clock skew in seconds (default 300; 0 disables). | |
| svix_signature | Yes | The svix-signature header (may contain multiple space-separated sigs). | |
| svix_timestamp | Yes | The svix-timestamp header (unix seconds). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool operates 'Locally' and 'verify' implies no side effects, and it details the required inputs and return value. It does not mention potential error conditions or edge cases (e.g., malformed secret), but the core behavior is transparent enough for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and the key differentiator ('no API call'). It enumerates the required inputs and return value without any wasted words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema and no annotations, the description is quite complete: it states the local nature, lists the inputs, and describes the return shape. It does not explain edge cases like timestamp tolerance, but that parameter is fully documented in the schema. The combination is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates the parameters in a readable summary ('exact raw request body, the svix-id/svix-timestamp/svix-signature headers, and your endpoint signing secret') but does not add meaning beyond the schema. It is accurate and helpful, but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Locally verify') with a clear resource ('a webhook delivery's Svix-style signature') and explicitly distinguishes itself from API calls ('no API call'). It also names the key inputs (headers, secret) and return shape, making it easy to differentiate from sibling webhook management tools like test_webhook or rotate_webhook_secret.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly signals when to use this tool: for local signature verification without making an API call. It implicitly excludes API-based verification routes, but it does not explicitly name alternative tools or state when not to use it. The 'no API call' phrase gives strong contextual guidance, though explicit alternatives would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
111 tool updates
v1.0.2- First observed
add_automation_step - First observed
add_contact_to_segment - First observed
apply_domain_dns_cloudflare - First observed
apply_domain_dns_godaddy - First observed
apply_domain_dns_namecheap - First observed
cancel_campaign - First observed
cancel_email - First observed
check_domain_mx - First observed
claim_domain - First observed
create_api_key - First observed
create_audience - First observed
create_automation - First observed
create_campaign - First observed
create_contact - First observed
create_contact_property - First observed
create_domain - First observed
create_event - First observed
create_segment - First observed
create_template - First observed
create_topic - First observed
create_webhook - First observed
delete_api_key - First observed
delete_audience - First observed
delete_automation - First observed
delete_automation_step - First observed
delete_campaign - First observed
delete_contact - First observed
delete_contact_property - First observed
delete_domain - First observed
delete_event - First observed
delete_received_email - First observed
delete_segment - First observed
delete_template - First observed
delete_topic - First observed
delete_webhook - First observed
detect_domain_dns - First observed
duplicate_template - First observed
forward_received_email - First observed
get_audience - First observed
get_automation - First observed
get_automation_run - First observed
get_campaign - First observed
get_campaign_ab - First observed
get_campaign_stats - First observed
get_contact - First observed
get_contact_property - First observed
get_contact_topics - First observed
get_domain - First observed
get_domain_claim - First observed
get_email_attachment - First observed
get_log - First observed
get_poll_results - First observed
get_received_email - First observed
get_received_email_attachment - First observed
get_received_email_raw - First observed
get_segment - First observed
get_template - First observed
get_topic - First observed
get_webhook - First observed
import_contacts_batch - First observed
import_contacts_csv - First observed
import_sheet_contacts - First observed
list_api_keys - First observed
list_audiences - First observed
list_automation_runs - First observed
list_automations - First observed
list_campaigns - First observed
list_contact_properties - First observed
list_contact_segments - First observed
list_contacts - First observed
list_domains - First observed
list_email_attachments - First observed
list_emails - First observed
list_events - First observed
list_logs - First observed
list_polls - First observed
list_received_email_attachments - First observed
list_received_emails - First observed
list_segment_contacts - First observed
list_segments - First observed
list_templates - First observed
list_topics - First observed
list_webhooks - First observed
publish_template - First observed
remove_contact_from_segment - First observed
reply_received_email - First observed
retrieve_email - First observed
rotate_webhook_secret - First observed
send_batch_emails - First observed
send_campaign - First observed
send_email - First observed
send_event - First observed
stop_automation - First observed
test_webhook - First observed
update_audience - First observed
update_automation - First observed
update_automation_step - First observed
update_campaign - First observed
update_contact - First observed
update_contact_property - First observed
update_contact_topics - First observed
update_domain - First observed
update_email - First observed
update_event - First observed
update_segment - First observed
update_template - First observed
update_topic - First observed
update_webhook - First observed
verify_domain - First observed
verify_domain_claim - First observed
verify_webhook_signature
TDQS
Scored across 111 tools
Almost every tool maps to a distinct resource+action, and the descriptions are specific. A few pairs could be confused—create_event (definition) vs send_event, and get_email_attachment vs get_received_email_attachment—but the names plus descriptions largely disambiguate them.
Tools overwhelmingly follow a snake_case verb_noun pattern (create_domain, list_contacts, update_campaign). Minor inconsistency: retrieve_email instead of get_email, and several synonyms for similar actions (stop/cancel/delete, verify/check) slightly soften the pattern.
111 tools is an extreme count; even if each maps to a distinct endpoint, the set is far beyond the well-scoped range and will burden an agent's selection. This aligns with the 50+ overgrown category.
The surface covers full lifecycles for domains, audiences, contacts, properties, segments, topics, templates, campaigns, sent/received emails, automations, events, webhooks, API keys, logs, and polls. There are no obvious dead ends or missing CRUD operations for the apparent email-platform domain.
Maintenance
Related MCP Connectors
Email infrastructure for AI agents: send, read replies as threads, campaigns, per-key limits.
Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.
Email for AI agents — send, receive as a webhook, manage domains, templates, routing.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage email newsletters and contacts via Resend, including sending broadcasts to segments, managing subscribers in bulk, scheduling campaigns, and tracking delivery status using human-friendly identifiers.12,046 npm5MIT
- FlicenseBqualityDmaintenanceEnables AI assistants to interact with the Inbound Email API to manage domains, endpoints, and email communications. Users can send or schedule emails, manage webhooks, and retrieve email threads through natural language commands.142-
- FlicenseNot gradedqualityDmaintenanceAI-powered email assistant that enables sending, parsing, and managing emails using natural language. Provides 4 tools (smart_email, parse_email_intent, send_email, email_chat) with SSE/stdio transport support.-

sendcraft-mcpofficial
AlicenseAqualityDmaintenanceEnables AI agents to send emails, manage campaigns, subscribers, templates, and domains via the SendCraft email API.265 npmMIT