Skip to main content
Glama
helbertparanhos

resend-email-mcp

resend-email-mcp

The most complete Resend MCP server — full coverage of the Resend API (emails, domains, contacts, broadcasts, templates, segments, topics, webhooks, logs) plus a unique debug/diagnostics layer no other Resend MCP offers: deliverability analysis, DNS troubleshooting, email lifecycle inspection, bounce explanation, and account auditing.

Works with Claude Code, Cursor, Claude Desktop, and any other MCP client.

npm version License: MIT GitHub Stars GitHub Forks GitHub Issues Glama Quality

TypeScript Node.js MCP Claude Code Cursor Claude Desktop

Instagram YouTube LinkedIn Buy Me A Coffee Strat Academy


Why this MCP

resend-email-mcp

Official resend-mcp

Minimal MCPs

Send / batch / schedule

partial

Domains, contacts, broadcasts, templates, segments, topics, webhooks

API request logs tools

Debug layer (diagnose, analyze, inspect, explain, audit)

7 tools

Readonly safety mode

Raw escape hatch for new endpoints

Idempotency-key support

partial

75 tools + 2 resources.


Related MCP server: Resend MCP Server

Quick start

1. Get a Resend API key

Create one at https://resend.com/api-keys.

2. Add to your MCP client

Claude Code (CLI)

claude mcp add resend -e RESEND_API_KEY=re_xxxxxxxx -- npx -y resend-email-mcp

Cursor / Claude Desktop / generic (mcp.json / claude_desktop_config.json)

{
  "mcpServers": {
    "resend": {
      "command": "npx",
      "args": ["-y", "resend-email-mcp"],
      "env": {
        "RESEND_API_KEY": "re_xxxxxxxx",
        "RESEND_FROM": "Acme <hello@acme.com>"
      }
    }
  }
}

Config file locations:

  • Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json

  • Claude Desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json

  • Cursor: ~/.cursor/mcp.json (or per-project .cursor/mcp.json)

Restart the client and ask: "Send a test email to delivered@resend.dev" or "Audit my Resend account."


Configuration

Env var

Required

Description

RESEND_API_KEY

Your Resend API key

RESEND_FROM

Default sender for send_email when from is omitted (must be a verified domain)

RESEND_REPLY_TO

Default Reply-To address

RESEND_READONLY

true blocks every mutating tool (send/create/update/delete). Safe exploration of production

RESEND_ATTACHMENTS_DIR

Directory that send_email's localPath attachments are restricted to. Unset = disk reads disabled (safe default; path traversal is blocked)

RESEND_BASE_URL

Override API base URL (default https://api.resend.com). Must be https (http only for localhost)

RESEND_MAX_RETRIES

Retries on 429/5xx (default 3)


Tools

Emails

send_email · send_batch_emails · get_email · list_emails · update_email · cancel_email · preview_email

send_email accepts attachments by base64 content, public path (URL), or localPath (a file on disk, read and base64-encoded automatically — only enabled when RESEND_ATTACHMENTS_DIR is set, and restricted to that directory). preview_email dry-runs a message — resolving the final sender, sizing attachments, and surfacing warnings — without sending.

Attachments (sent & received)

list_email_attachments · get_email_attachment · list_received_emails · get_received_email · list_received_attachments · get_received_attachment

Domains

create_domain · get_domain · list_domains · update_domain · delete_domain · verify_domain

API keys

create_api_key · list_api_keys · delete_api_key

Broadcasts

create_broadcast · get_broadcast · list_broadcasts · update_broadcast · send_broadcast · delete_broadcast

Contacts

create_contact · get_contact · list_contacts · update_contact · delete_contact · get_contact_topics · update_contact_topics · list_contact_segments · add_contact_to_segment · remove_contact_from_segment

Contact properties

create_contact_property · get_contact_property · list_contact_properties · update_contact_property · delete_contact_property

Segments

create_segment · get_segment · list_segments · delete_segment · list_segment_contacts

Templates

create_template · get_template · list_templates · update_template · delete_template · publish_template · duplicate_template

Topics

create_topic · get_topic · list_topics · update_topic · delete_topic

Webhooks

create_webhook · get_webhook · list_webhooks · update_webhook · delete_webhook

Logs

list_logs · get_log

🔍 Debug & diagnostics (the differentiator)

Tool

What it does

diagnose_domain

Inspects every DNS record (SPF/DKIM/DMARC) and reports what's missing + how to fix it

analyze_deliverability

Aggregates recent sends into delivery/bounce/complaint rates with a health verdict

inspect_email

Renders one email's full lifecycle timeline and flags problems

explain_bounce

Classifies a bounce (hard/soft/block) and recommends the action

audit_account

One-shot health check of domains, keys, and deliverability

search_logs

Smart filtering of API logs by status/path/recipient to find failures

test_send

Safely simulates delivered/bounced/complained via Resend sandbox addresses

Escape hatch

resend_raw — call any Resend endpoint not yet wrapped in a dedicated tool.

Resources

Beyond tools, the server exposes two read-only MCP resources so a client can pull account context without spending a tool call:

URI

Content

resend://account

Domains + API keys snapshot

resend://domains

All sending domains with verification status

Every tool is annotated with MCP hints (readOnlyHint, destructiveHint, idempotentHint) so clients can show which operations are safe and which need confirmation.


Example prompts

  • "Diagnose why acme.com isn't verified."diagnose_domain

  • "How healthy is my email sending this week?"analyze_deliverability

  • "What happened to email re_abc123?"inspect_email

  • "Why did that email bounce and what should I do?"explain_bounce

  • "Something's wrong with my Resend setup — check everything."audit_account

  • "Send our launch newsletter to the 'beta' segment."create_broadcast + send_broadcast


Testing safely

Use Resend's sandbox addresses (no reputation impact):

  • delivered@resend.dev — simulates delivery

  • bounced@resend.dev — simulates a hard bounce

  • complained@resend.dev — simulates a spam complaint

Or just run test_send and then inspect_email on the returned ID.

Enable RESEND_READONLY=true to explore a production account without any risk of sending or deleting.


Troubleshooting

This MCP is built to debug itself — when something fails, reach for the diagnostic tools instead of guessing.

Symptom / error

Likely cause

What to run

validation_error: from domain is not verified

Your from/RESEND_FROM domain isn't verified

list_domainsdiagnose_domain (shows missing DNS records + fixes) → verify_domain

Emails send but never arrive

Deliverability / reputation issue

analyze_deliverability then inspect_email on a sample ID

missing_api_key / invalid_api_key (HTTP 401)

RESEND_API_KEY unset or wrong

Check the .env; create a key at resend.com/api-keys

restricted_api_key / not_authorized (403)

Key scoped to sending-only or one domain

Use a full_access key (list_api_keys to inspect)

rate_limit_exceeded (429)

Too many requests

The client auto-retries with backoff; reduce volume

daily_quota_exceeded

Plan send limit reached

Upgrade plan or wait for reset

A specific email bounced

Invalid/blocking recipient

explain_bounce (classifies hard/soft/block + action)

"Is anything wrong with my setup?"

audit_account (one-shot health check)

Request fails for unknown reason

search_logs with only_errors: true

Every error returned by this server includes the HTTP status, Resend's error name, and an actionable Hint line.


Local development

git clone https://github.com/helbertparanhos/resend-email-mcp.git
cd resend-email-mcp
npm install
npm run build
cp .env.example .env   # add your RESEND_API_KEY
npm run inspector      # opens the MCP Inspector against the built server

License

MIT © Helbert Paranhos / Strat Academy

Built with the Model Context Protocol. Not affiliated with Resend.

Available Tools

75 tools
add_contact_to_segmentB
Idempotent

Add a contact to a segment.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact ID
segment_idYesSegment ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already provide idempotentHint=true and destructiveHint=false, indicating safe retries and no destruction. The description merely restates the action without adding behavioral context, such as whether adding an already associated contact errors or silently succeeds.

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

Conciseness4/5

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

The description is a single, well-structured sentence that front-loads the action. It is appropriately concise for a simple tool, though it could be more informative without becoming verbose.

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

Completeness3/5

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

Given the tool's simplicity and the presence of annotations and schema, the description is adequate but not comprehensive. It omits important context like prerequisites (segment existence) and behavior on duplicate adds, which would improve completeness.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters (id and segment_id). The tool description adds no extra meaning beyond the schema, so it meets the baseline without adding value.

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

Purpose5/5

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

The description uses a specific verb ('Add') and resource ('contact' to 'segment'), clearly stating the action. It distinguishes itself from sibling tools like 'remove_contact_from_segment' and 'create_contact', making the purpose unmistakable.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not specify prerequisites (e.g., contact and segment must exist) or mention any context where another tool might be more appropriate.

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

analyze_deliverabilityA
Read-onlyIdempotent

Aggregate the MOST RECENT sent emails (up to 100 — a single page, not the full history) into deliverability metrics: delivered / bounced / complained / suppressed / opened / clicked counts and rates, plus a health verdict and recommendations. Use to answer 'how is my email health?' or to investigate a recent drop in delivery.

ParametersJSON Schema
NameRequiredDescriptionDefault
sampleNoHow many recent emails to analyze (default 100)

TDQS

A4.5/5.0
Behavior5/5

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

Discloses scope (most recent up to 100, single page) and lists metrics (delivered, bounced, complained, etc.) beyond what annotations provide. Annotations already indicate read-only and idempotent, no contradiction.

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

Conciseness5/5

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

Two sentences with no waste. Front-loaded with action and scope, immediately followed by usage guidance.

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

Completeness5/5

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

Given the tool's simplicity (one optional param, no output schema), the description fully covers purpose, scope, and use cases. No gaps.

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

Parameters3/5

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

Only one parameter with full schema coverage (100%). Description does not add additional meaning beyond schema, baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states it aggregates recent sent emails into deliverability metrics, with a specific verb ('Aggregate') and resource ('sent emails'), and distinguishes from siblings by focusing on email health analysis.

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

Usage Guidelines4/5

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

Explicitly says 'Use to answer how is my email health? or to investigate a recent drop in delivery,' providing clear context. Missing explicit when-not-to-use or alternatives, but the purpose is well-defined.

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

audit_accountA
Read-onlyIdempotent

One-shot health check of the whole Resend account: lists domains (and whether they're verified), API keys, and recent deliverability (most recent 100 emails), then returns a prioritized list of problems and recommendations. Great first call when 'emails aren't working'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that it returns a prioritized list of problems and recommendations, which goes beyond the annotations by disclosing the output structure and the 'one-shot' nature, making the tool's behavior fully transparent.

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

Conciseness5/5

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

Two concise sentences, first describing the action and output, second providing usage guidance. No superfluous words, front-loaded with key information.

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

Completeness5/5

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

Despite no output schema, the description explains the return value (prioritized list of problems and recommendations). For a 0-parameter diagnostic tool, this is complete and sufficient for an agent to understand what the tool does and what it returns.

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

Parameters4/5

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

The tool has zero parameters, so the input schema fully describes them (none exist). The description adds no parameter-level detail, but none is needed; baseline for 0 parameters is 4.

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

Purpose5/5

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

The description clearly states the tool performs a 'one-shot health check' of the entire Resend account, listing domains, API keys, and recent deliverability, then returning prioritized problems. This is specific and distinguishes it from sibling tools like diagnose_domain (per-domain) or analyze_deliverability (focused).

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

Usage Guidelines4/5

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

The description explicitly says 'Great first call when emails aren't working', providing a clear use case. While it doesn't mention when not to use or list alternatives, this guidance is sufficient for the primary scenario.

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

cancel_emailA
Destructive

Cancel a scheduled email that has not been sent yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.6/5.0
Behavior3/5

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

The description correctly implies a destructive action, aligning with annotations (destructiveHint: true). However, it does not add any behavioral context beyond what annotations already provide, such as reversibility 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the essential purpose without any unnecessary words. It is 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.

Completeness4/5

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

For a straightforward tool with one parameter, no output schema, and clear annotations, the description is sufficient. It could add a minor refinement like 'only applicable to emails with status scheduled', but it is already complete enough.

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

Parameters3/5

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

The sole parameter 'id' is fully documented in the input schema with pattern and description, so the description does not add extra meaning beyond 'The resource ID'. Schema coverage is 100%, hence baseline score of 3.

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

Purpose5/5

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

The description clearly states the action ('cancel') and the target ('a scheduled email that has not been sent yet'), with a specific verb and resource that distinguishes it from siblings like 'update_email' or 'send_email'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., 'update_email' to modify the scheduled email, or 'delete_broadcast' for broadcasts), nor are there any prerequisites or conditional hints mentioned.

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 a new Resend API key. The full key value is returned ONLY once — store it securely. Optionally scope it to sending-only and to a single domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA label for the key, e.g. 'production'
permissionNo"full_access" (default) or "sending_access" (can only send emails)
domain_idNoRestrict a sending_access key to a single domain ID

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds critical behavioral info: the full key value is returned only once and must be stored securely. It also explains optional scoping constraints, which go beyond annotations.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence states the purpose, the second adds critical storage warning and optional scoping. Front-loaded and efficient.

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

Completeness4/5

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

For a creation tool without output schema, the description covers the key behavior (one-time return of key) and optional scoping. It could mention that name is required, but the schema covers that. Missing error handling or prerequisites, but still adequate.

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

Parameters4/5

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

Schema coverage is 100% so baseline is 3. The description adds context by explaining that permission can be 'sending_access' and domain_id restricts to a single domain, relating schema fields to usage scenarios. This adds value beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool creates a new Resend API key, with specific verb 'Create' and resource 'API key'. It distinguishes from sibling tools like list_api_keys and delete_api_key by focusing on creation and the one-time return of the key.

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

Usage Guidelines4/5

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

The description mentions optional scoping to sending-only and single domain, providing context on when to use these features. However, it does not explicitly state when to use this tool versus alternatives like list_api_keys or delete_api_key.

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

create_broadcastA

Create a broadcast (newsletter / campaign) targeted at an audience or segment. Created as a draft — use send_broadcast to deliver or schedule it.

ParametersJSON Schema
NameRequiredDescriptionDefault
audience_idNoTarget audience ID (audience or segment must be provided)
segment_idNoTarget segment ID
fromYesSender, e.g. "Acme <news@acme.com>" (verified domain)
subjectYesEmail subject line
reply_toNoReply-To address(es)
htmlNoHTML body (use {{{RESEND_UNSUBSCRIBE_URL}}} for the unsubscribe link)
textNoPlain-text body
nameNoInternal name for the broadcast
preview_textNoInbox preview/preheader text

TDQS

A4.3/5.0
Behavior4/5

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

Adds behavioral context beyond annotations by stating the broadcast is created as a draft, implying no immediate sending. No contradictions with annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with action and resource, no wasted words.

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

Completeness5/5

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

Given the complexity (9 params, 2 required, no output schema), the description clearly states the tool's purpose and lifecycle (draft, then send), which is sufficient for correct invocation.

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

Parameters3/5

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

All parameters have schema descriptions (100% coverage). The description does not add additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Specific verb 'Create' with resource 'broadcast', clarified as newsletter/campaign, and distinguishes from sibling 'send_broadcast' by noting draft state.

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

Usage Guidelines4/5

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

Explicitly states the purpose and directs to use 'send_broadcast' for delivery, but does not mention when not to use or alternatives.

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

create_contactA

Create a contact. Provide email plus optional name and custom properties. unsubscribed controls subscription state.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesContact email address
first_nameNo
last_nameNo
unsubscribedNoMark as unsubscribed (default false)
propertiesNoCustom property values keyed by property name

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate non-read-only and non-destructive behavior. The description adds that 'unsubscribed' controls subscription state but does not disclose potential side effects (e.g., triggering emails, duplicate handling) beyond what annotations imply. No contradiction with annotations.

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

Conciseness5/5

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

The description is two sentences, thoroughly efficient. Every word adds value: verb, object, required field, optional fields, and a key parameter note. No extraneous text.

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

Completeness3/5

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

For a tool with 5 parameters and no output schema, the description covers the primary action and key fields but lacks details on return values, idempotency behavior, and handling of duplicates. The openWorldHint annotation is not echoed in the description.

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

Parameters3/5

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

With 60% schema description coverage, the description adds meaning by summarizing required and optional fields and highlighting 'unsubscribed' role. However, it does not elaborate on 'properties' or name fields beyond their presence, leaving some ambiguity for custom property syntax.

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

Purpose5/5

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

The description clearly states the action ('Create a contact') and specifies the required field (email) plus optional fields, distinguishing it from update or delete tools among siblings.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like update_contact or delete_contact. The description does not mention use cases, prerequisites, or exclusions.

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 (a field you can store on every contact, e.g. 'plan' or 'signup_date').

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProperty name (key)
typeYesData type of the property

TDQS

A3.7/5.0
Behavior2/5

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

Annotations already indicate it's a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). Description adds no behavioral context beyond stating it creates a property.

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

Conciseness5/5

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

One sentence with 20 words, front-loaded with key action and resource. No wasted words.

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

Completeness5/5

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

Given the simplicity (2 required params, no output schema), the description provides sufficient context: what it does and an example use case.

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

Parameters3/5

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

Schema coverage is 100%, so description provides no extra parameter information beyond schema examples. The examples given are more about purpose than parameter details.

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

Purpose5/5

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

Description clearly states verb 'Create', resource 'custom contact property', and provides examples ('plan', 'signup_date'), distinguishing it from sibling tools like list, update, delete.

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

Usage Guidelines3/5

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

No explicit guidance on when to use vs alternatives (e.g., update or delete). Usage is implied by the creation verb but not elaborated.

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

create_domainA

Add a sending domain to Resend. Returns the DNS records (SPF, DKIM, optional DMARC) you must add to your DNS provider before verifying.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDomain name, e.g. "acme.com" or "mail.acme.com"
regionNoSending region (default us-east-1)
custom_return_pathNoCustom Return-Path subdomain (default "send")

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already denote a mutation (readOnlyHint=false). Description adds that it returns DNS records needed for verification, providing value beyond annotations. Could mention pending state or authentication needs.

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

Conciseness5/5

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

Two succinct sentences. First states action, second states output. No redundant or unnecessary words.

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

Completeness4/5

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

Covers purpose and output. Lacks mention of pending state or necessity to verify later, but with sibling tools, agents can infer. Reasonably complete for a creation tool without output schema.

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

Parameters3/5

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

Schema coverage is 100% (all parameters described). Description does not add new parameter-level info but provides context about output (DNS records). Baseline score is appropriate.

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

Purpose5/5

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

Description uses a specific verb ('Add') and resource ('sending domain'), clearly states the action and outputs (DNS records), and distinguishes from sibling tools like verify_domain or delete_domain.

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

Usage Guidelines4/5

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

Implicitly indicates this is the initial step before verification, but does not explicitly mention when to use vs. alternatives or prerequisites. Still clear enough for an agent to infer usage context.

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 — a saved, optionally rule-based grouping of contacts you can target with broadcasts.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSegment name
filterNoOptional filter rules object defining segment membership

TDQS

A3.8/5.0
Behavior2/5

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

Annotations already indicate a mutation (readOnlyHint=false). The description confirms creation but adds no behavioral context beyond that—e.g., whether duplicate names are allowed, if validation occurs, or any side effects. With openWorldHint=true, more behavioral clarity would help.

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

Conciseness5/5

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

Single, clear sentence with no redundancy or fluff. Efficiently conveys core functionality.

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

Completeness4/5

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

Covers the main purpose and usage of parameters well. Missing mention of return value (likely the created segment) but acceptable given typical creation tool behavior and no output schema.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds value by explicitly noting the filter parameter is optional and defines membership, reinforcing the schema's explanation.

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

Purpose5/5

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

The description clearly states the tool creates a segment, a grouping of contacts for targeting broadcasts, and notes the optional rule-based nature, distinguishing it from siblings like list_segments, 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.

Usage Guidelines3/5

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

The description implies usage for creating new segments, static or dynamic, but does not explicitly state when to use it versus alternatives (e.g., add_contact_to_segment for adding contacts to existing segments). No exclusions or prerequisites are provided.

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. Use {{variable}} placeholders in html/text and pass values via send_email's templateData.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTemplate name
subjectNoDefault subject line
htmlNoHTML body with {{placeholders}}
textNoPlain-text body with {{placeholders}}

TDQS

A4.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (write operation), but description adds minimal behavioral context beyond creation. Does not disclose details like required authentication, potential duplication behavior, or that additional properties are not allowed despite openWorldHint.

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

Conciseness5/5

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

Two concise sentences: first states purpose, second provides actionable usage pattern. No redundant or extra words. Front-loaded with key information.

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

Completeness4/5

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

Covers essential usage (creation with placeholders) and links to sending. Does not specify return value (likely template ID), but for a creation tool this is acceptable. With no output schema, a minor gap remains.

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

Parameters4/5

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

Schema covers all parameters with descriptions. Description adds value by explaining the placeholder syntax ({{variable}}) and how to use them with send_email, enhancing understanding beyond raw schema.

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

Purpose5/5

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

Description clearly states 'Create a reusable email template.' Specifies verb (create) and resource (email template), and distinguishes from siblings by mentioning {{variable}} placeholders and linking to send_email.

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

Usage Guidelines4/5

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

Gives explicit guidance on using placeholders and how to pass values via send_email's templateData. Implies appropriate context for template creation. Does not explicitly state when not to use or list alternatives like duplicate_template.

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

create_topicA

Create a topic — a subscription category (e.g. 'Product updates', 'Promotions') contacts can opt in/out of independently.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTopic name shown in subscription preferences
descriptionNoOptional description of the topic

TDQS

A3.7/5.0
Behavior3/5

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

Annotations indicate a write operation (readOnlyHint=false) that is not destructive, not idempotent, and open-world. The description adds context about the topic being a subscription category, but doesn't disclose potential side effects, duplicates, or limits beyond the annotation hints.

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

Conciseness5/5

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

The description is a single sentence that front-loads the purpose and includes an illustrative example. Every word earns its place.

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

Completeness3/5

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

Given two simple parameters and no output schema, the description covers the core purpose but lacks information about return values, error conditions, or prerequisites. It is adequate but not thorough.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters. The description adds only an example ('Product updates', 'Promotions'), which is marginal 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.

Purpose5/5

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

The description clearly states the verb 'Create' and the resource 'topic' with the definition 'a subscription category... contacts can opt in/out of independently.' It distinguishes from siblings like delete_topic or update_topic by specifying the purpose.

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

Usage Guidelines3/5

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

The description explains what a topic is and implies it should be used for opt-in/out categories, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., create_segment, create_broadcast) or mention when not to use it.

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

create_webhookA

Create a webhook endpoint that receives Resend events. Returns a signing secret used to verify payloads.

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointYesHTTPS URL that will receive event POSTs
eventsYesEvent types to subscribe to

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate non-read-only, non-destructive, and non-idempotent behavior. The description adds context about the return of a signing secret for payload verification, which is relevant behavioral info. No contradictions detected.

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

Conciseness5/5

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

The description is two short sentences, fully front-loaded with the action and purpose. Every word serves a purpose: creating the webhook, receiving events, and returning a signing secret. No unnecessary detail.

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

Completeness4/5

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

Given the simple structure (2 params, no nested objects, no output schema) and annotations, the description covers the essential purpose and return value. It could mention that the webhook sends POSTs for selected events, but overall it's sufficiently complete for an AI agent to understand usage.

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

Parameters3/5

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

The input schema fully describes both parameters (endpoint and events) with their types and descriptions. The tool description adds no additional parameter-specific information, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action 'Create', the resource 'webhook endpoint', and its purpose 'receives Resend events'. It also mentions the unique return value of a signing secret, distinguishing it from other create tools like create_domain or create_api_key.

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

Usage Guidelines3/5

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

The description implies the tool is used when setting up event notifications, but lacks explicit guidance on prerequisites (e.g., requirement for a verified domain) or when alternatives like other webhook tools (update_webhook, delete_webhook) should be used. No 'when not to use' is provided.

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

delete_api_keyA
DestructiveIdempotent

Permanently revoke an API key by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.9/5.0
Behavior4/5

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

Description adds 'permanently revoke' which reinforces the destructive and irreversible nature beyond the annotations. Annotations already declare destructiveHint=true, but the description provides additional 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.

Conciseness5/5

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

Single sentence, no fluff, front-loaded with verb and resource. Every word earns its place.

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

Completeness5/5

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

Given the low complexity (one parameter, no output schema, clear annotations), the description is complete enough for an AI agent to understand the tool's purpose.

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

Parameters3/5

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

Schema coverage is 100% with description 'The resource ID' for the id parameter. The tool description adds no additional meaning beyond what the schema already provides.

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

Purpose5/5

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

The description uses a specific verb ('revoke') and resource ('API key') with method ('by ID'), clearly distinguishing it from other delete tools like delete_contact or delete_broadcast.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives, such as prerequisites (e.g., the key must exist) or when not to use it (e.g., if key is in use).

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

delete_broadcastA
DestructiveIdempotent

Delete a broadcast (only drafts and scheduled broadcasts can be deleted).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructiveHint true and idempotentHint true. The description adds important behavioral context by stating the state precondition for deletion, which is beyond what annotations provide. It does not disclose additional side effects or error behavior, but the state condition adds meaningful transparency.

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

Conciseness5/5

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

The description is a single sentence that conveys the essential information without any waste. Every part is necessary, and the key constraint is front-loaded. No unnecessary details or repetition.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema, annotations present), the description is mostly complete. It could benefit from noting that deletion is permanent and what happens if a non-draft/scheduled broadcast is targeted (error message or no-op), but the current description covers the primary constraint. Minor gap, so 4.

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

Parameters3/5

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

Schema coverage is 100%, with the parameter 'id' described as 'The resource ID'. The description adds no further parameter semantics. Baseline of 3 is appropriate as the schema already handles parameter documentation.

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

Purpose5/5

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

The description clearly states the verb 'delete' and resource 'broadcast', adding a specific scope constraint that only drafts and scheduled broadcasts can be deleted. This distinguishes it from sibling tools like 'create_broadcast' or 'update_broadcast' and provides clear purpose.

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

Usage Guidelines4/5

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

The description gives a clear condition for when the tool is applicable (only drafts and scheduled broadcasts), which guides usage. However, it does not explicitly mention when not to use it or suggest alternatives (e.g., for sent broadcasts). That context is implicitly missing, so a score of 4 is appropriate.

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

delete_contactA
DestructiveIdempotent

Delete a contact by ID or email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact ID or email address

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate destructiveHint: true and idempotentHint: true, which the description aligns with. However, the description does not add additional behavioral context beyond what annotations provide, such as whether deletion is permanent or cascades. With annotations covering the safety profile, the description adds minimal extra transparency.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words. It is front-loaded and efficient, earning its place without redundancy.

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

Completeness5/5

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

Given the tool's simplicity (one required parameter, no output schema, and clear annotations), the description sufficiently covers what the tool does and how to use it. No additional details are necessary for an agent to invoke it correctly.

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

Parameters3/5

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

The input schema already describes the parameter 'id' as 'Contact ID or email address' with 100% coverage. The description simply reiterates this, adding no new meaning beyond what the schema provides. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action (delete) and resource (contact), and specifies the identifier method (by ID or email address). This distinguishes it from other contact-related tools like create_contact or update_contact.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. For a simple deletion tool, it's adequate but lacks context about prerequisites or side effects.

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

delete_contact_propertyB
DestructiveIdempotent

Delete a contact property by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true, but the description adds no additional behavioral context such as irreversibility, permissions required, or side effects. It fails to add value beyond the structured annotations.

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

Conciseness5/5

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

The description is a single sentence that efficiently communicates the core action without any extraneous words. It earns its place through brevity.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description is minimally complete. However, it lacks any mention of prerequisites, consequences, or results, which could be included even for simple operations.

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

Parameters3/5

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

The input schema has 100% description coverage for the single parameter 'id', and the description does not add any extra meaning. Per the rubric, baseline is 3 when schema coverage is high.

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

Purpose4/5

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

The description clearly states the verb (delete) and resource (contact property) and specifies deletion by ID. However, it does not differentiate from sibling delete tools (e.g., delete_api_key, delete_contact) beyond the resource name, which limits clarity when multiple delete tools exist.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor any context about prerequisites or when not to use it. It simply states the action without usage advice.

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

delete_domainA
DestructiveIdempotent

Permanently delete a domain from Resend.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide destructiveHint, idempotentHint, readOnlyHint; description adds 'permanently' but no additional behavioral context beyond that.

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

Conciseness5/5

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

Single sentence with no unnecessary words, directly addresses the tool's action.

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

Completeness4/5

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

For a simple deletion with one required parameter and no output schema, the description adequately conveys the operation, though could mention success/error responses.

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

Parameters3/5

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

Schema coverage is 100%; description does not add any parameter details beyond the schema-provided description of 'id'.

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

Purpose5/5

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

Description clearly states 'permanently delete a domain from Resend', with specific verb and resource, distinguishing from sibling tools like create_domain 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.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no mention of prerequisites or caveats for deletion.

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

delete_segmentA
DestructiveIdempotent

Delete a segment by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true and idempotentHint=true. The description reinforces the destructive nature but adds no additional behavioral context beyond what annotations convey.

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

Conciseness5/5

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

The description is a single sentence that conveys the purpose directly. No wasted words.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description is largely sufficient. It could mention irreversibility, but annotations already imply destructive behavior.

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

Parameters3/5

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

Schema coverage is 100%. The single parameter 'id' has a clear description in the schema. The tool description adds no extra meaning beyond that.

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

Purpose5/5

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

The description clearly states the action 'Delete' and resource 'segment', with the input 'by ID'. It is specific and distinguishes from sibling tools like create_segment or list_segments.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., other delete tools). The description does not provide context for prerequisites or exclusions.

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

delete_templateB
DestructiveIdempotent

Delete a template by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true and idempotentHint=true, so the description's 'Delete' aligns. No additional behavioral context added beyond what annotations offer.

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

Conciseness4/5

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

Single sentence effectively conveys purpose. No wasted words, though could be slightly more informative without losing conciseness.

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

Completeness3/5

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

Sufficient for a simple delete with good annotations, but lacks details on return value, error cases, or consequences of deleting a template (e.g., irreversibility).

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

Parameters3/5

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

Schema has one required parameter 'id' with 100% coverage (description, pattern, minLength). Description adds no further meaning beyond 'by ID', so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Delete a template by ID,' which is a specific verb and resource. It differentiates from sibling tools like create_template, duplicate_template, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as prerequisites, consequences, or exclusions. The description is purely functional.

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

delete_topicA
DestructiveIdempotent

Delete a topic by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, which describe the behavioral traits. The description simply restates the deletion action without adding context like whether deletion is irreversible or what happens if the topic does not exist. It adds no value beyond what annotations provide.

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

Conciseness5/5

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

The description is a single sentence with no wasted words, perfectly concise and front-loaded with the essential information. It is appropriately sized for a simple delete operation.

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

Completeness4/5

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

For a simple delete tool with one parameter and comprehensive annotations, the description is sufficiently complete. It does not cover return values, but that is acceptable given the lack of an output schema and the typical behavior of delete operations.

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

Parameters3/5

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

The input schema already describes the 'id' parameter with 'The resource ID', achieving 100% schema description coverage. The description does not add any additional parameter-level details, so it meets the baseline expectation.

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

Purpose5/5

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

The description 'Delete a topic by ID' clearly states the verb (delete) and the resource (topic), distinguishing it from sibling delete tools that target other resources like contacts or API keys.

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

Usage Guidelines3/5

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

The description provides the basic purpose but lacks explicit guidance on when to use this tool versus alternatives, such as mentioning that it is for deleting topics specifically, not for other resources. Given the straightforward nature, it's adequate but minimal.

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

delete_webhookA
DestructiveIdempotent

Delete a webhook by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true. The description 'Delete a webhook by ID' confirms destructive nature but adds no additional behavioral context beyond annotations. It does not contradict annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that communicates the entire purpose. There is no unnecessary information, making it highly efficient.

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

Completeness5/5

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

For a simple delete operation with one parameter and no output schema, the description fully covers the necessary context. The tool's purpose is clear and complete.

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

Parameters3/5

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

The input schema has 100% coverage with the 'id' parameter described as 'The resource ID'. The description adds no extra meaning beyond what the schema provides. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Delete' and the resource 'webhook', with the identifier 'by ID'. It is specific and distinguishes it from sibling tools like create_webhook, get_webhook, or list_webhooks.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as when a webhook is no longer needed or if there are dependencies that must be removed first. The description lacks any context for appropriate usage.

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

diagnose_domainA
Read-onlyIdempotent

Deep DNS/verification diagnosis for a sending domain. Fetches the domain, inspects every required DNS record (SPF, DKIM, DMARC, MX, Return-Path), reports what is verified vs. pending/missing, and gives concrete fix steps. Use this whenever sending fails with 'domain not verified' or before going live.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID (from list_domains)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations indicate readOnlyHint, destructiveHint false, idempotentHint, openWorldHint. Description adds specifics: fetches domain, inspects DNS records, reports status, and gives fix steps, all consistent with read-only, non-destructive behavior, adding value beyond annotations.

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

Conciseness5/5

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

Three sentences: a concise summary, one detailing actions, and one providing usage context. No redundancy, every sentence adds value, and key info is front-loaded.

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

Completeness5/5

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

Given the single required parameter and no output schema, the description adequately explains what the tool does and what the agent can expect (reports status and fix steps). Annotations cover safety, making this complete for its complexity.

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

Parameters3/5

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

Only one parameter 'id' is fully described in the schema (Domain ID from list_domains). The tool description does not add extra meaning beyond that, but schema coverage is 100%, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool performs deep DNS/verification diagnosis for a sending domain. It specifies inspecting DNS records (SPF, DKIM, DMARC, MX, Return-Path) and reporting status with fix steps, distinguishing it from siblings like get_domain or verify_domain.

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

Usage Guidelines4/5

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

Explicitly says to use when sending fails with 'domain not verified' or before going live, giving clear context. However, it does not name alternative tools for other scenarios, leaving some ambiguity.

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

duplicate_templateB

Duplicate an existing template into a new one.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
nameNoName for the duplicated template

TDQS

B3.1/5.0
Behavior2/5

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

The description does not disclose what duplication entails (e.g., whether it copies all properties, generates a new ID, or has side effects). Annotations are minimal (readOnlyHint false, destructiveHint false) and don't compensate.

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

Conciseness4/5

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

Single sentence, direct and clear. Could add more detail without becoming verbose, but remains efficient.

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

Completeness2/5

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

No output schema and no description of return value (e.g., does it return the new template object?). For a simple tool, the description could be more complete regarding the result and edge cases (e.g., behavior when name is omitted).

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

Parameters3/5

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

Schema coverage is 100% for both parameters, so the description adds no additional meaning beyond what is already in the schema. Baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action 'duplicate' and the resource 'template', distinguishing it from create, update, delete, and other template tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus creating a template from scratch or updating an existing one. Prerequisites (e.g., existence of the source template) are not mentioned.

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

explain_bounceA
Read-onlyIdempotent

Diagnose why an email bounced. Fetches the email, classifies the bounce as hard / soft / block / suppressed, explains it in plain language, and recommends the correct action (remove address, retry later, fix content, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe bounced email ID

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds substantial behavioral context beyond these: it fetches the email, classifies bounce types (hard/soft/block/suppressed), explains in plain language, and recommends actions. This reveals internal logic and output structure without contradicting annotations.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the tool's purpose and key outputs. It is front-loaded with the main action ('Diagnose why an email bounced') and provides essential details without unnecessary words. Every clause earns its place.

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

Completeness5/5

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

Given the simple input (one ID) and no output schema, the description fully covers what the tool does, what it returns (classification, explanation, recommendation), and its role in the domain. There are no missing details 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.

Parameters3/5

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

Schema coverage is 100% with one parameter 'id' documented as 'The bounced email ID'. The description adds no additional meaning for this parameter beyond what the schema provides. Since schema coverage is high, baseline 3 is appropriate. No param-specific enrichment needed.

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

Purpose5/5

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

The description uses a specific verb ('Diagnose') and clearly identifies the resource ('why an email bounced'). It lists specific actions: fetching the email, classifying the bounce type, explaining in plain language, and recommending actions. This distinguishes it from sibling tools like inspect_email or get_email, which likely provide raw data without diagnosis.

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

Usage Guidelines4/5

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

The description implicitly indicates use when an email has bounced and you need to understand the cause and next steps. It does not explicitly state when not to use it or mention alternatives, but the context of sibling tools (e.g., inspect_email, get_email) suggests this is the specialized tool for bounced emails. A missing explicit exclusion drops the score from 5.

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

get_broadcastA
Read-onlyIdempotent

Retrieve a broadcast by ID, including its status (draft/scheduled/sent) and stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A4.1/5.0
Behavior4/5

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

Description adds value beyond annotations by specifying that the tool returns status (draft/scheduled/sent) and stats. Annotations already indicate read-only behavior, so description provides additional context about the response content. No contradictions with annotations.

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

Conciseness5/5

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

Single sentence that is concise, front-loaded with the action and resource, and includes the most important details (returns status and stats). No unnecessary words.

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

Completeness5/5

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

Given the simplicity of the tool (1 parameter, no output schema), the description provides sufficient information: it retrieves a broadcast and returns its status and stats. No gaps in understanding for a get operation.

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

Parameters3/5

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

Input schema has 100% description coverage for the single parameter 'id', described as 'The resource ID'. Description does not add any further semantic detail beyond the schema baseline. Adequate but does not enhance understanding.

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

Purpose5/5

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

The description uses the verb 'retrieve' and specifies the resource 'broadcast by ID'. It clearly distinguishes from sibling tools like create_broadcast or delete_broadcast by indicating it's a read operation that returns status and stats.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives such as list_broadcasts. It implies usage for retrieving a single broadcast by ID, but lacks guidance on when not to use it or criteria for choosing over other retrieval tools.

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

get_contactA
Read-onlyIdempotent

Retrieve a contact by ID or by email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact ID or email address

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is clear. The description adds the capability to retrieve by ID or email, but does not elaborate on any behavioral nuances such as rate limits, data freshness, or error cases. Given the annotation coverage, the description adds moderate but not extensive transparency.

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

Conciseness5/5

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

The description is a single sentence that immediately conveys the action and valid identifiers. It is front-loaded, concise, and contains no superfluous information, making it efficient for an agent to parse.

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

Completeness4/5

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

For a simple retrieval tool with one parameter and rich annotations, the description adequately covers the core function. However, it does not mention what data is returned (e.g., full contact object) or any response structure, but this is typical for get operations and is partly compensated by the tool name and schema.

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

Parameters3/5

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

The input schema already describes the 'id' parameter as 'Contact ID or email address' with 100% coverage. The description essentially restates this information without adding new semantics, such as format expectations or behavior when both types are provided. Thus, it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description clearly states 'Retrieve a contact by ID or by email address,' specifying the verb (retrieve) and the resource (contact). It also distinguishes from sibling tools that deal with properties, segments, or other resources, making the purpose unambiguous.

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

Usage Guidelines2/5

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 versus alternatives like list_contacts or get_contact_property. It does not mention conditions, prerequisites, or scenarios where this tool is preferred, leaving the agent to infer usage without clear heuristics.

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

get_contact_propertyA
Read-onlyIdempotent

Retrieve a contact property by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, etc. Description adds only what the name implies, no extra behavioral context beyond annotations.

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

Conciseness5/5

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

Single, front-loaded sentence with no wasted words. Efficient and clear.

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

Completeness5/5

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

For a simple read tool with one parameter and comprehensive annotations, the description is complete enough. No missing essential information.

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

Parameters3/5

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

Schema has 100% description coverage for parameter 'id' with 'The resource ID'. Description adds no additional meaning beyond schema.

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

Purpose5/5

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

Description clearly states 'Retrieve a contact property by ID.' Uses specific verb and resource, and distinguishes from sibling tools like create/update/delete/list contact property.

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

Usage Guidelines3/5

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

Implicitly indicates use when needing a specific contact property by ID, but no explicit when-to-use or alternatives are provided.

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

get_contact_topicsA
Read-onlyIdempotent

List the topic subscriptions of a contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact ID

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds no behavioral info beyond purpose, but no contradictions.

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

Conciseness5/5

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

Single sentence, front-loaded, no wasted words. Perfectly concise for a simple list operation.

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

Completeness5/5

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

Given the simple single-parameter tool with rich annotations and no output schema, the description is complete enough for the agent to understand the tool.

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

Parameters3/5

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

Schema has 100% coverage for the single parameter 'id' with description 'Contact ID'. The tool description adds no further parameter meaning.

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

Purpose5/5

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

The description 'List the topic subscriptions of a contact' uses a specific verb and resource, clearly distinguishing from siblings like 'list_topics' (all topics) and 'update_contact_topics'.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs. alternatives like 'list_topics' or 'get_topic'. Usage is implied by name and description but not clarified.

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

get_domainA
Read-onlyIdempotent

Retrieve a domain by ID, including verification status and the full list of DNS records with their current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe read operation. The description adds value by specifying the returned content (verification status, DNS records) without contradicting annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the key purpose and output. Every part is informative and no unnecessary words are included.

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

Completeness4/5

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

For a simple retrieval tool with one parameter and no output schema, the description adequately explains what is returned (verification status, DNS records). It could be slightly more detailed about the structure of DNS records but is sufficiently complete.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter 'id' described as 'The resource ID'. The description does not add additional meaning beyond the schema, so a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'domain by ID', and specifies the returned data (verification status, DNS records). It effectively distinguishes from sibling tools like list_domains and diagnose_domain.

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

Usage Guidelines4/5

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

The description implies usage for retrieving a single domain's details, but lacks explicit guidance on when to use this tool versus alternatives such as list_domains or diagnose_domain. No exclusions or prerequisites are provided.

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

get_emailA
Read-onlyIdempotent

Retrieve a single sent email by ID, including its current delivery status.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds value by specifying that the delivery status is included in 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.

Conciseness5/5

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

A single, front-loaded sentence that conveys the action, resource, and key detail (delivery status) without any wasted words.

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

Completeness5/5

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

For a simple retrieval tool with one parameter and full annotation coverage, the description is complete—it specifies the resource type, identifier, and a key aspect of the output.

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

Parameters3/5

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

The schema has 100% coverage with a description for the 'id' parameter. The description mentions 'by ID' but adds no further meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states it retrieves a single sent email by ID and includes delivery status, distinguishing it from sibling tools like list_emails or get_contact.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like list_emails or update_email, but the purpose is clear from context.

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

get_email_attachmentA
Read-onlyIdempotent

Retrieve a single attachment of a sent email by attachment ID (returns metadata / download info).

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesThe sent email ID
attachment_idYesThe attachment ID

TDQS

A4/5.0
Behavior4/5

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

Description adds that the tool returns 'metadata / download info', which goes beyond annotations (readOnlyHint, etc.). Provides context about the nature of the return value.

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

Conciseness5/5

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

Single efficient sentence with no wasted words. Front-loaded with key action and resource.

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

Completeness4/5

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

Given no output schema, the description explains the return type (metadata/download info). Lacks details on format (e.g., URL vs binary), but sufficient for basic invocation.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. Description merely restates 'by attachment ID' without adding new meaning beyond the schema.

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

Purpose5/5

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

Clearly states 'Retrieve a single attachment of a sent email by attachment ID', specifying the verb, resource, and scope. Distinguishes from sibling tools like list_email_attachments and get_received_attachment.

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

Usage Guidelines3/5

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

Implies usage for sent email attachments via the phrase 'of a sent email', contrasting with get_received_attachment. No explicit when-to-use or when-not-to-use guidance.

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

get_logA
Read-onlyIdempotent

Retrieve a single API request log entry by ID, with full request/response detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint, covering safety and idempotency. The description adds that the response includes 'full request/response detail,' providing context on output richness not captured by annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence of 13 words. It conveys purpose and scope efficiently with no unnecessary words.

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

Completeness5/5

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

For a simple retrieval tool with one parameter, no output schema, and annotations covering behavior, the description is adequate. It mentions the key detail of returning full request/response information, which is sufficient for the agent to understand what to expect.

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

Parameters3/5

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

Schema description coverage is 100%: the only parameter 'id' has description 'The resource ID.' The description does not add any further parameter semantics beyond the schema, so baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states 'Retrieve a single API request log entry by ID, with full request/response detail.' It specifies the verb (retrieve), resource (single log entry), and scope (by ID), and implicitly distinguishes from sibling tools like list_logs and search_logs.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when needing a single log entry by ID) but does not explicitly mention when not to use it or alternatives like list_logs or search_logs. Usage guidance 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.

get_received_attachmentA
Read-onlyIdempotent

Retrieve a single attachment of a received email by attachment ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesThe received email ID
attachment_idYesThe attachment ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety. The description adds no further behavioral context (e.g., authorization requirements, rate limits, or edge cases). With annotations present, a score of 3 is appropriate as the description does not contradict or enhance.

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

Conciseness5/5

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

The description is a single, concise sentence with no wasted words. It is front-loaded with the core action and resource, making it easy to parse.

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

Completeness4/5

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

For a simple retrieval operation with two parameters, the description covers the essential action. However, there is no output schema, and the description does not specify what is returned (e.g., file data or URL). Minor gap, but overall adequate.

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

Parameters3/5

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

Both parameters have full descriptions in the input schema (100% coverage), so the description adds no extra meaning. According to the rubric, baseline for high coverage is 3.

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

Purpose5/5

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

The description clearly specifies the verb 'Retrieve', the resource 'single attachment of a received email', and the mechanism 'by attachment ID'. It effectively distinguishes from sibling tools like 'list_received_attachments' and likely '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.

Usage Guidelines2/5

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_email_attachment' (for sent emails) or 'list_received_attachments' (to list all). It lacks context on prerequisites or 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
Read-onlyIdempotent

Retrieve a single received email by ID, including parsed headers and body.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false. Description adds that the tool returns 'parsed headers and body', which provides some behavioral context beyond annotations. However, it doesn't discuss rate limits or authentication.

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

Conciseness5/5

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

Single sentence of 12 words, perfectly concise and front-loaded. Every word is necessary.

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

Completeness4/5

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

For a simple single-parameter get tool with annotations covering safety, the description adequately states what is returned (parsed headers and body). It does not explain return format or pagination, but those are not needed for single retrieval. Could be more complete but sufficient.

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

Parameters3/5

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

Schema description coverage is 100% with parameter 'id' described as 'The resource ID'. Description only says 'by ID' which adds no new meaning; baseline of 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Retrieve a single received email by ID, including parsed headers and body.' This is a specific verb+resource, and distinguishes from siblings like get_email or get_received_attachment.

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

Usage Guidelines3/5

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

Description implies usage for retrieving a email by ID, but does not explicitly state when to use vs alternatives like get_email or inspect_email, nor provides exclusions.

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

get_segmentA
Read-onlyIdempotent

Retrieve a segment by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds no new behavioral context but is consistent with them.

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

Conciseness5/5

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

Single sentence, front-loaded with the key action and resource, no extraneous information.

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

Completeness3/5

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

Adequate for a simple retrieval tool with one parameter and rich annotations, but lacks mention of return value format since no output schema exists.

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

Parameters3/5

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

Schema coverage is 100%, providing description for the 'id' parameter; the tool description adds 'by ID' which is redundant but consistent.

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

Purpose5/5

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

The description clearly states the action 'retrieve' and the resource 'segment', differentiating it from sibling tools like create_segment or delete_segment.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_contact or list_segments; lacks context on prerequisites or exclusions.

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

get_templateA
Read-onlyIdempotent

Retrieve a template by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. Description adds no additional behavioral context beyond this, such as error handling 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.

Conciseness5/5

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

Single sentence with clear verb and resource, no wasted words. Front-loaded with the action.

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

Completeness3/5

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

Description is adequate for a simple retrieval tool with one parameter and rich annotations, but fails to mention return value or error behavior. Leaves agent without full context.

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

Parameters3/5

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

Schema description coverage is 100% with the parameter 'id' described as 'The resource ID'. The tool description adds no extra meaning beyond the schema, so baseline score of 3 applies.

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

Purpose5/5

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

Description clearly states action (retrieve), resource (template), and required identifier (by ID). Distinguishes from sibling tools like create_template, delete_template, update_template, and list_templates.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives such as list_templates for fetching multiple templates. The purpose is implied by the name, but the description lacks contextual usage instructions.

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

get_topicA
Read-onlyIdempotent

Retrieve a topic by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, effectively communicating that this is a safe, idempotent read operation. The description adds no additional behavioral context beyond the annotations, so it meets but does not exceed expectations.

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

Conciseness5/5

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

The description is extremely concise, consisting of a single sentence that is front-loaded and directly states the purpose. Every word is necessary, and there is no redundant or boilerplate text.

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

Completeness4/5

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

Given the tool's simplicity (single parameter, read-only retrieval), the description is sufficiently complete for an AI agent to understand its core function. The lack of output schema documentation is not critical since the tool name and sibling tools imply a standard topic object is returned.

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

Parameters3/5

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

The input schema has one parameter 'id' with a description 'The resource ID', which is adequate. The description does not add further meaning beyond the schema, and schema coverage is 100%, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description 'Retrieve a topic by ID' clearly specifies the action (retrieve) and the resource (topic). It is unambiguous but does not distinguish from sibling tools like 'get_contact_topics' or 'list_topics', which also retrieve topics in different contexts.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It implies single-topic retrieval by ID, but does not mention when not to use it (e.g., for batch operations or when context is needed).

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

get_webhookA
Read-onlyIdempotent

Retrieve a webhook by ID (including its subscribed events and status).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds that the return includes subscribed events and status, which is minor but consistent. No contradiction.

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

Conciseness5/5

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

The description is a single sentence that is concise and front-loaded with the action and key details. No unnecessary words.

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

Completeness4/5

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

For a simple read operation with one parameter, the description adequately explains the purpose and return content. Missing details about behavior on missing ID, but standard for GET operations.

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

Parameters3/5

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

The input schema provides full coverage with a description for the id parameter. The description does not add any additional semantics beyond the schema.

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

Purpose5/5

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

The description clearly states the tool retrieves a webhook by ID, with added detail about including subscribed events and status. This distinguishes it from sibling tools like list_webhooks (list all) and update_webhook (modify).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like list_webhooks or update_webhook. The usage context is only implied by the tool name and sibling set.

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

inspect_emailA
Read-onlyIdempotent

Full lifecycle view of one email: fetches it and renders a readable timeline of its events (sent → delivered → opened → clicked, or bounced/complained), highlighting the final state and any problem. Use to answer 'what happened to this email?'.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe sent email ID

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark readOnlyHint and idempotentHint as true. Description adds that it renders a timeline of events and highlights final state/problems, expanding on what the tool does beyond fetching.

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

Conciseness5/5

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

Two sentences front-loaded with the main action and purpose, zero wasted words.

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

Completeness5/5

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

Given 1 parameter, no output schema, and complete annotations, the description adequately covers tool behavior and return value (timeline with final state).

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

Parameters3/5

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

Schema coverage is 100% for the single parameter id. Description does not add meaning beyond the schema's description ('The sent email ID'), so baseline score of 3 applies.

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

Purpose5/5

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

Description clearly states 'Full lifecycle view of one email: fetches it and renders a readable timeline of its events... highlighting final state and any problem.' This distinguishes it from siblings like get_email (raw fetch), explain_bounce (specific problem), and list_emails (list format).

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

Usage Guidelines4/5

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

Explicitly says 'Use to answer "what happened to this email?"' providing clear context. Does not mention when not to use or alternatives, but sibling tools are distinct enough.

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

list_api_keysA
Read-onlyIdempotent

List all API keys (metadata only — secret values are never returned).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

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

Description explicitly states that secret values are never returned, adding behavioral context beyond the readOnlyHint and idempotentHint annotations.

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

Conciseness5/5

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

Single sentence, front-loaded with main action, no extraneous content.

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

Completeness5/5

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

Tool is simple with no parameters and no output schema; description is complete and adequate for agent use.

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

Parameters4/5

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

No parameters in schema; baseline of 4 for zero parameters. Description adds no param info but none needed.

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

Purpose5/5

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

Description clearly states verb 'List' and resource 'API keys', and specifies that only metadata is returned. Distinguishes from create/delete siblings.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance, but task is straightforward given zero parameters and read-only nature.

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

list_broadcastsA
Read-onlyIdempotent

List all broadcasts (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (1-100)
afterNoPagination cursor: return items after this ID
beforeNoPagination cursor: return items before this ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds 'paginated,' which is also evident from the input schema parameters, so little extra behavioral context is provided.

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

Conciseness5/5

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

The description is a single, concise sentence that effectively communicates the core purpose without unnecessary words or structure.

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

Completeness4/5

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

For a simple paginated list tool with full parameter descriptions and safety annotations, the description is mostly complete. However, it could note the openWorldHint implication that 'all broadcasts' may not be exhaustive, and it omits any mention of default ordering or filtering.

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

Parameters3/5

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

The input schema has 100% parameter description coverage, so the description does not need to add meaning. The baseline score of 3 is appropriate as the description adds no extra parameter semantics.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'broadcasts,' with the pagination hint distinguishing it from single-resource tools like get_broadcast and mutation tools like create_broadcast.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., get_broadcast for a single item or list_segments for other resources). The description lacks any contextual advice for the agent.

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

list_contact_propertiesA
Read-onlyIdempotent

List all custom contact properties defined on the account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint. Description adds 'custom' and 'on the account,' but no further behavioral context beyond what is implied by annotations.

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

Conciseness5/5

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

Single sentence, no fluff, perfectly concise and front-loaded with verb and resource.

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

Completeness5/5

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

Tool has no parameters, no output schema, and rich annotations. The description is complete enough: it specifies what is listed and the scope.

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

Parameters4/5

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

Input schema has zero parameters (100% coverage). Description does not need to add parameter details; it correctly states the scope ('on the account') which is the only relevant context.

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

Purpose5/5

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

The description clearly states it lists 'custom contact properties' on the account, distinguishing it from sibling tools like 'get_contact_property' (single) and 'list_contacts' (contacts).

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

Usage Guidelines3/5

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

No explicit guidance on when to use versus alternatives, but the purpose is self-evident. No exclusions or when-not-to-use provided.

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

list_contactsB
Read-onlyIdempotent

List contacts (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (1-100)
afterNoPagination cursor: return items after this ID
beforeNoPagination cursor: return items before this ID

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, which the description doesn't contradict. The description adds 'paginated', a useful behavioral detail, but lacks other traits like ordering or filtering.

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

Conciseness4/5

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

The description is very short and front-loaded, conveying the purpose efficiently. It earns its place without waste, though slightly more detail could be beneficial.

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

Completeness3/5

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

Given the tool's simplicity and the availability of annotations and full schema coverage, the description is adequate. However, it lacks details on return format or pagination mechanics, and there is no output schema to compensate.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for all 3 parameters (limit, after, before). The description does not add any extra meaning beyond the schema, so baseline score of 3 applies.

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

Purpose4/5

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

The description clearly states the action ('List') and resource ('contacts'), with a hint of pagination. However, it does not differentiate from sibling tools that also list contact-related data, such as 'list_contact_properties' or '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.

Usage Guidelines2/5

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. There is no mention of context, prerequisites, or exclusions, leaving the agent to infer usage.

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

list_contact_segmentsA
Read-onlyIdempotent

List the segments a contact belongs to.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, covering safety. The description adds no extra behavioral context (e.g., pagination, rate limits). It is consistent but does not extend beyond annotations.

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

Conciseness5/5

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

A single six-word sentence conveys the entire purpose with no unnecessary words. Front-loaded and efficient.

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

Completeness4/5

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

For a simple read-only tool with one parameter and no output schema, the description is sufficient. However, it lacks mention of potential pagination or return format, but given the tool's simplicity, a 4 is appropriate.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter 'id' described as 'Contact ID'. The description does not add additional meaning beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states 'List the segments a contact belongs to,' using a specific verb ('List') and resource ('segments a contact belongs to'). It distinguishes from siblings like 'list_segments' (all segments) and 'list_segment_contacts' (contacts in a segment).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description implies use when needing segments for a contact, but does not mention when not to use it or suggest other tools like 'list_segments' or 'get_contact'.

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

list_domainsA
Read-onlyIdempotent

List all domains on the account with their verification status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

The description adds that the tool returns verification status, which is a behavioral detail beyond what annotations provide. Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, so the description complements them without repeating.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the core purpose. Every word is necessary, and there is no extraneous information.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema), the description adequately conveys what the tool does and what it returns. It could optionally hint at the response structure (e.g., array of objects), but the core information is present.

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

Parameters4/5

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

The tool has zero parameters, and schema coverage is 100%. Per the scoring guidelines, 0 parameters defaults to a baseline of 4. The description does not need to explain parameters, and it adds no extra semantic information.

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

Purpose5/5

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

The description clearly states the action ('List'), the resource ('all domains'), and a specific attribute ('verification status'). This fully distinguishes it from sibling tools like get_domain (single 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.

Usage Guidelines2/5

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 such as get_domain (for a single domain) or verify_domain (for checking a specific domain). The description implies the tool is for listing all domains but offers no exclusions or 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
Read-onlyIdempotent

List the attachments of a sent email.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesThe sent email ID

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds no extra behavioral details (e.g., that it returns metadata only, not file contents). No contradiction.

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

Conciseness5/5

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

Single sentence, front-loaded, with zero wasted words.

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

Completeness4/5

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

Given simple tool with one param and rich annotations, description is adequate. Could mention the return type (list of attachment metadata) but not strictly necessary since no output schema.

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

Parameters3/5

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

Schema covers 100% of the parameter with a description. The tool description adds no additional meaning beyond what the schema provides.

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

Purpose5/5

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

Description clearly states verb 'List' and resource 'attachments of a sent email', distinguishing it from sibling tools like get_email_attachment and list_received_attachments.

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

Usage Guidelines4/5

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

Implicitly scopes to sent emails, but does not explicitly guide when to use this tool over alternatives like list_received_attachments or get_email_attachment. Missing context about prerequisites or typical use cases.

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

list_emailsA
Read-onlyIdempotent

List sent emails (paginated). Useful to find recent sends and their IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (1-100)
afterNoPagination cursor: return items after this ID
beforeNoPagination cursor: return items before this ID

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. The description adds the behavioral detail that the results are paginated, which is not covered by annotations.

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

Conciseness5/5

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

Two sentences with no fluff. Front-loaded with purpose and use case. Every sentence adds value.

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

Completeness3/5

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

The description is brief but sufficient for a simple list tool. It hints at return values (IDs) but does not specify the full response structure. Given no output schema, a bit more detail would be beneficial.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions already provided. The description adds context by stating pagination, but does not elaborate on parameter usage beyond that.

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

Purpose5/5

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

The description clearly states the verb 'list' and resource 'sent emails', specifies pagination, and the use case of finding recent sends with IDs. It distinguishes itself from siblings like 'list_received_emails'.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: to find recent sent emails and their IDs. However, it does not explicitly state when not to use it or mention alternative tools like 'list_received_emails'.

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

list_logsA
Read-onlyIdempotent

List API request logs — every request made to your Resend account with status code, endpoint and timing. The backbone for debugging. For smart filtering use search_logs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (1-100)
afterNoPagination cursor: return items after this ID
beforeNoPagination cursor: return items before this ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, indicating safe read operation. The description adds that the tool returns logs with status, endpoint, timing, and supports pagination, which is helpful beyond annotations.

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

Conciseness5/5

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

Two sentences, each serving a clear purpose: first states what the tool does and returns; second provides usage context and alternative. No wasted words.

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

Completeness4/5

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

Given it is a simple list tool with pagination and no output schema, the description adequately covers the data returned (status, endpoint, timing) and directs to sibling for advanced search. Additional detail on return format might be nice but not necessary.

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

Parameters3/5

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

Schema description coverage is 100% (limit, after, before well-documented). The description does not add parameter-level detail beyond what the schema provides, so baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it lists API request logs with specific fields (status code, endpoint, timing). It explicitly distinguishes from `search_logs` by mentioning its own scope and directing to the sibling for advanced filtering.

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

Usage Guidelines4/5

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

The description provides clear context: 'The backbone for debugging' and directs to `search_logs` for smart filtering. However, it lacks explicit when-not-to-use or prerequisites.

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

list_received_attachmentsA
Read-onlyIdempotent

List the attachments of a received email.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesThe received email ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, so the tool is safe. The description adds no extra behavioral context (e.g., does it return metadata or content? Is there pagination?). Given annotations cover safety, a score of 3 is appropriate.

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

Conciseness5/5

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

Single, short sentence that is front-loaded and to the point. No unnecessary words.

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

Completeness3/5

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

No output schema; the description does not specify what the return value looks like (e.g., list of attachment IDs or objects). For a list tool, this is a notable gap, though the name implies a list of attachments.

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

Parameters3/5

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

Schema coverage is 100%, with clear description for email_id. The tool description adds no additional meaning beyond what the schema provides, so baseline 3.

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

Purpose5/5

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

The description uses a specific verb 'List' and resource 'attachments', clearly indicating it lists attachments of a received email. It distinguishes from sibling tools like get_received_attachment (singular) and list_received_emails (lists emails, not attachments).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_received_attachment for a single attachment). The description only states what it does, without context or prerequisites.

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

list_received_emailsA
Read-onlyIdempotent

List inbound (received) emails. Requires email receiving to be configured on your Resend account.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (1-100)
afterNoPagination cursor: return items after this ID
beforeNoPagination cursor: return items before this ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds the configuration requirement, but no other behavioral traits like pagination behavior 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.

Conciseness5/5

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

Two sentences, front-loaded with the core action, no wasted words. Efficient and clear.

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

Completeness4/5

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

Given no output schema, the description covers the prerequisite and the core function. Parameters are fully described in the schema. It adequately informs the agent for basic usage, but could mention typical use cases or edge cases.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (limit, after, before). The description does not add any additional meaning beyond what is in the schema, so baseline 3 applies.

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

Purpose4/5

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

The description clearly states 'List inbound (received) emails' which is a specific verb+resource. It distinguishes from sibling tools like list_emails by specifying 'inbound', but does not explicitly differentiate from other list tools.

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

Usage Guidelines3/5

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

The description mentions a prerequisite ('Requires email receiving to be configured'), which provides some context. However, it does not indicate when to use this tool over alternatives like list_emails or get_received_email.

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

list_segment_contactsA
Read-onlyIdempotent

List the contacts that belong to a segment (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSegment ID
limitNoMax items to return (1-100)
afterNoPagination cursor: return items after this ID
beforeNoPagination cursor: return items before this ID

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. The description adds pagination context, but no further behavioral traits (e.g., rate limits, sorting defaults). It does not contradict annotations.

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

Conciseness5/5

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

The description is a single, short sentence that front-loads the purpose. Every word is necessary and there is no extraneous information.

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

Completeness3/5

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

For a simple read-only tool with good annotations, the description is minimally viable. However, it lacks details on response format (e.g., what object fields are returned) and ordering. More context could be provided for completeness.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented in the schema. The description mentions pagination which relates to cursor and limit params, but adds no semantic meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists contacts belonging to a segment with pagination, using a specific verb and resource. It distinguishes from sibling tools like add_contact_to_segment and list_contacts.

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

Usage Guidelines3/5

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

The description implies usage for retrieving contacts from a segment but does not explicitly guide when to use it vs alternatives like list_contacts or list_contact_segments. No when-not-to-use or exclusion criteria are provided.

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

list_segmentsA
Read-onlyIdempotent

List all segments.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, so transparency is adequate. Description adds no extra behavioral detail beyond what annotations provide.

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

Conciseness5/5

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

Single sentence 'List all segments.' is concise, front-loaded, and contains no unnecessary words.

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

Completeness4/5

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

For a parameterless tool with output schema absent, the description is nearly complete. Could mention that it lists all segments (no filtering) but not essential.

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

Parameters4/5

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

No parameters exist, so baseline is 4. Description correctly omits parameter info as schema coverage is 100%.

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

Purpose5/5

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

Description clearly states 'list' as verb and 'segments' as resource, distinguishing it from siblings like 'get_segment' (single segment) and other list tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, nor any context about prerequisites or exclusions.

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

list_templatesA
Read-onlyIdempotent

List all templates (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (1-100)
afterNoPagination cursor: return items after this ID
beforeNoPagination cursor: return items before this ID

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this as a safe, read-only, idempotent operation. The description adds that it is paginated, which is useful context beyond annotations.

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

Conciseness5/5

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

The description is a single, well-front-loaded sentence with no unnecessary words.

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

Completeness3/5

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

With no output schema and multiple parameters, the description could explain pagination behavior (e.g., order, default limit) or what fields are returned. It is minimally adequate but leaves gaps.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already well-documented in the schema. The description adds no extra meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states it lists all templates and mentions pagination, distinguishing it from siblings like get_template (single) or create_template.

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

Usage Guidelines3/5

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

The description implies usage for listing but provides no explicit guidance on when to use vs alternatives (e.g., get_template for a single template) or when not to use.

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

list_topicsA
Read-onlyIdempotent

List all topics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive, so the description does not need to repeat that. However, it adds no behavioral context beyond the annotations, such as return format or pagination. The description is neutral and does not contradict annotations.

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

Conciseness5/5

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

The description is extremely concise: three words in a single sentence, front-loaded with no redundancy. Every word earns its place.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema, full annotations), the description is largely complete. However, it could briefly mention that it returns a list of topic objects for clarity.

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

Parameters4/5

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

The tool has zero parameters, so the description does not need to explain parameter meaning. The schema coverage is 100%, meeting the baseline for this dimension.

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

Purpose4/5

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

The description 'List all topics.' clearly states the verb (list) and resource (topics), and the scope (all). It distinguishes from get_topic (single) and list_contact_topics (filtered), though not explicitly. Sibling tool names provide context.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_contact_topics or search_logs. No when-not or prerequisite information is provided.

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

list_webhooksA
Read-onlyIdempotent

List all configured webhooks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds the scope 'all configured' which provides a bit of context beyond annotations.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded and wastes no words.

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

Completeness4/5

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

For a simple list tool with no parameters and no output schema, the description adequately covers the purpose. It could mention the return type but is not necessary.

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

Parameters4/5

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

No parameters exist, so baseline is 4. The description does not need to add parameter info.

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

Purpose5/5

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

The description 'List all configured webhooks' uses a specific verb-resource combination and clearly distinguishes this tool from siblings like get_webhook (single) and other list tools.

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

Usage Guidelines3/5

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

The description implies usage by stating it lists all webhooks, but does not explicitly mention when to use this vs alternatives like get_webhook or other list tools.

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

preview_emailA
Read-onlyIdempotent

Dry-run an email WITHOUT sending it. Resolves the final from (incl. RESEND_FROM default), validates the payload, reads/sizes any local attachments, and returns a summary plus warnings. Use to verify a message before calling send_email.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoSender, e.g. "Acme <hello@acme.com>". Falls back to RESEND_FROM. Domain must be verified.
toYesRecipient address(es), e.g. "user@example.com" or ["a@x.com","b@y.com"]
subjectYesEmail subject line
htmlNoHTML body (provide html and/or text)
textNoPlain-text body (provide html and/or text)
ccNoRecipient address(es), e.g. "user@example.com" or ["a@x.com","b@y.com"]
bccNoRecipient address(es), e.g. "user@example.com" or ["a@x.com","b@y.com"]
replyToNoReply-To address(es). Falls back to RESEND_REPLY_TO.
scheduledAtNoSchedule for later: ISO-8601 or natural language like "in 1 hour" / "tomorrow at 9am"
attachmentsNo
tagsNo
headersNoCustom headers, e.g. {"X-Entity-Ref-ID": "123"}
templateIdNoSend using a saved template instead of html/text
templateDataNoVariables to interpolate into the template
idempotencyKeyNoOptional Idempotency-Key to make retries safe (avoids duplicate sends)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations (readOnlyHint, destructiveHint, etc.) align with the description. The description adds valuable behavioral details: resolving the from field, validating the payload, reading/sizing local attachments, and returning a summary plus warnings. No contradictions.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence immediately states the core purpose. Information is front-loaded and easy to parse.

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

Completeness4/5

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

Given 15 parameters, nested objects, and no output schema, the description covers the core behavior adequately ('returns a summary plus warnings'). However, it omits details about what the summary contains or the structure of warnings, which would improve completeness.

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

Parameters4/5

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

Schema description coverage is 87%, so parameters are well-documented in the schema. The description adds value by explaining the 'from' fallback (RESEND_FROM default) and local attachment handling beyond what the schema provides.

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

Purpose5/5

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

The description clearly states 'Dry-run an email WITHOUT sending it', using a specific verb and resource. It distinguishes itself from the sibling 'send_email' by explicitly noting it doesn't send. The title 'Preview Email' aligns well.

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

Usage Guidelines4/5

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

The description explicitly advises 'Use to verify a message before calling send_email', providing clear context for when to use this tool. While it doesn't list explicit alternatives or exclusions, the context is sufficient for an agent to differentiate.

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

publish_templateA
Idempotent

Publish a template's draft so it becomes the live version used by sends.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate idempotentHint=true and destructiveHint=false. Description adds 'becomes live version' but no further behavioral context like permissions or reversibility. No contradiction with annotations.

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

Conciseness5/5

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

Single sentence, verb-first, no unnecessary words. Efficiently conveys the core purpose.

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

Completeness5/5

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

For a simple publish action with one parameter and no output schema, the description is complete. It clearly states what the tool does and the effect.

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

Parameters3/5

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

Schema covers 100% of parameters with baseline description ('The resource ID'). The tool description adds no additional meaning to the one parameter.

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

Purpose5/5

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

Description clearly states the action ('publish') and the resource ('template's draft'), specifying the outcome ('becomes the live version used by sends'). It differentiates from sibling tools like create_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.

Usage Guidelines3/5

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

The description implies usage when a template draft is ready to be live, but lacks explicit guidance on when to use this over siblings like update_template or duplicate_template. No alternatives or when-not-to-use are mentioned.

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

remove_contact_from_segmentC
DestructiveIdempotent

Remove a contact from a segment.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact ID
segment_idYesSegment ID

TDQS

C2.9/5.0
Behavior2/5

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

The description does not add behavioral context beyond what annotations already provide. Annotations indicate destructiveHint=true and idempotentHint=true, but the description omits any mention of side effects (e.g., the contact remains in other segments or that this action is reversible).

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

Conciseness4/5

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

The description is extremely concise at one sentence, with no wasted words. However, it is overly brief and lacks important context, balancing efficiency with incomplete information.

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

Completeness2/5

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

The description lacks completeness given the tool's mutation nature and the absence of an output schema. It does not explain what happens after removal (e.g., the contact is not deleted from the system), nor does it address reversibility or relationships with other entities. Annotations partially compensate, but the description should provide more context.

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

Parameters3/5

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

The input schema covers both parameters (id, segment_id) with descriptions, achieving 100% coverage. The description adds no additional meaning beyond the schema, so it meets the baseline but does not enhance understanding.

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

Purpose4/5

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

The description 'Remove a contact from a segment' clearly states the verb (remove) and the resources (contact, segment). It distinguishes from the sibling tool 'add_contact_to_segment', which performs the opposite action. However, it adds little beyond the tool name itself, lacking nuance such as that the contact itself is not deleted.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as 'add_contact_to_segment' or other contact management tools. There is no mention of prerequisites, context, or when not to use it.

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

resend_rawA

Advanced escape hatch — make a raw authenticated request to ANY Resend API endpoint not covered by a dedicated tool. Prefer specific tools when one exists. Mutating methods (POST/PATCH/PUT/DELETE) are blocked in readonly mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesHTTP method
pathYesEndpoint path starting with "/", e.g. "/emails" or "/domains/{id}"
bodyNoJSON request body for POST/PATCH/PUT
queryNoQuery-string parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations provide readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true. The description adds that mutating methods are blocked in readonly mode, which is important behavioral context beyond annotations. It also labels the tool as an 'Advanced escape hatch,' implying it is low-level and powerful. No contradictions. Could mention rate limits or authentication aspects, but still good.

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

Conciseness5/5

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

The description is extremely concise: two sentences, front-loaded with the main purpose. Every sentence provides essential information. No wasted words.

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

Completeness4/5

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

With no output schema, the description could explain return values, but since the tool is an escape hatch for arbitrary endpoints, the return format is endpoint-specific and cannot be generalized. The openWorldHint suggests the tool is flexible. The description is complete enough for its purpose, but missing a note about response format could be a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add extra parameter semantics beyond what the schema already provides. The schema itself has good descriptions for method and path. No additional insight from the description beyond the existing schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'make a raw authenticated request to ANY Resend API endpoint not covered by a dedicated tool.' It uses specific verbs ('make a raw authenticated request') and a specific resource ('ANY Resend API endpoint'). It also distinguishes from sibling tools by advising to prefer specific tools when one exists.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'Prefer specific tools when one exists' and 'Mutating methods (POST/PATCH/PUT/DELETE) are blocked in readonly mode.' This tells when to use this tool (as a fallback) and when not (if a dedicated tool exists, or in readonly mode).

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

search_logsA
Read-onlyIdempotent

Smart search over API request logs: fetch recent logs and filter by HTTP status, status class (e.g. only errors), endpoint path substring, and/or recipient. Returns matching entries plus a breakdown of error types. Use to find why requests are failing.

ParametersJSON Schema
NameRequiredDescriptionDefault
sampleNoHow many recent logs to scan (default 100)
statusNoExact HTTP status to match, e.g. 422
only_errorsNoKeep only entries with status >= 400
path_containsNoSubstring of the endpoint path, e.g. "/emails"
recipient_containsNoSubstring to match against recipient/email fields

TDQS

A4.2/5.0
Behavior4/5

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

The description adds value beyond the annotations by noting that the tool returns 'a breakdown of error types' alongside matching entries. Annotations already indicate read-safe, non-destructive, idempotent behavior, which aligns with the description. No contradictions.

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

Conciseness5/5

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

The description consists of two efficient sentences. The first sentence covers function and filters; the second covers output and use case. No redundant or vague wording.

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

Completeness4/5

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

Given the tool has 5 parameters and no output schema, the description adequately covers inputs and hints at output (entries + error breakdown). It does not elaborate on the breakdown structure, but the purpose is clear for an agent to select and invoke the tool correctly. Sibling tools are numerous, but the description doesn't compare; still, it's sufficient.

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

Parameters3/5

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

All 5 parameters are described in the input schema (100% coverage). The description lists filter categories (status, status class, path, recipient) but does not add details beyond what the schema already provides (e.g., default for sample, exact vs. class differentiation). Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'search' or 'fetch' and the resource 'API request logs', and distinguishes from siblings like 'get_log' (single log) and 'list_logs' (all logs) by specifying the filtering capability and the focus on recent logs.

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

Usage Guidelines4/5

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

The description provides a clear use case: 'Use to find why requests are failing.' While it doesn't explicitly state when not to use it or mention alternatives, the context of troubleshooting failures is well-established, and the tool's filtering options align with that purpose.

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 distinct emails in one call (one API request). Each entry is a full email object. Note: batch sends do NOT support attachments or scheduling per Resend limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailsYesArray of 1-100 email objects
idempotencyKeyNoOptional Idempotency-Key for the whole batch

TDQS

A3.9/5.0
Behavior3/5

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

Adds the limitation of no attachments/scheduling beyond annotations. However, does not disclose potential partial failures, rate limits, or atomicity of the batch. With sparse annotations, more transparency would be beneficial.

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

Conciseness5/5

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

Two brief, front-loaded sentences with zero superfluous words. Essential information is presented first.

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

Completeness3/5

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

Lacks details on return value, partial failure handling, and batch atomicity. For a tool sending multiple emails, more context on error scenarios is expected, though it covers the main constraint (no attachments/scheduling).

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

Parameters3/5

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

Schema coverage is 100% with detailed property descriptions. The description reiterates the 'full email object' concept but adds no new parameter-level meaning beyond what the schema provides.

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

Purpose5/5

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

Clearly states 'send up to 100 distinct emails in one call' with a specific verb and resource. Distinguishes from siblings like send_email and send_broadcast by highlighting batch nature and limits.

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

Usage Guidelines4/5

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

Provides clear context for when to use (multiple distinct emails) and explicitly excludes attachments and scheduling. Does not directly name alternative tools, but the sibling list and description imply proper use.

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

send_broadcastA

Send a broadcast now, or schedule it for later. Omit scheduledAt to send immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
scheduledAtNoISO-8601 or natural language like "tomorrow at 9am". Omit to send now.

TDQS

A4/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (write operation) and destructiveHint=false (not destructive). The description adds the timing behavior (immediate vs scheduled) but no additional behavioral context such as rate limits, required permissions, or side effects beyond what annotations convey.

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

Conciseness5/5

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

The description is a single, efficient sentence. Every word is necessary and contributes to understanding the tool's core function and the key parameter behavior.

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

Completeness4/5

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

For a simple, two-parameter tool with no output schema and straightforward behavior, the description covers the main use cases. However, it does not clarify that a broadcast must already exist (via create_broadcast) or define what a broadcast entails, which could aid completeness.

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

Parameters3/5

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

Schema coverage is 100%; both parameters are already described in the schema. The description merely rephrases the schema's prompt to omit scheduledAt for immediate sending, adding no deeper semantic meaning.

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

Purpose5/5

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

The description clearly states 'Send a broadcast now, or schedule it for later.' It uses a specific verb (send) and resource (broadcast), and the distinction from siblings like send_email (single email) or send_batch_emails (custom batch) is evident from the name and context.

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

Usage Guidelines4/5

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

The description provides guidance on when to use immediate vs scheduled sending via the scheduledAt parameter. However, it does not explicitly state when not to use this tool or mention alternatives for creating or updating broadcasts, which are available as siblings.

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 via Resend. Supports HTML/text, cc/bcc, reply-to, attachments, tags, custom headers, scheduling, and templates. Uses RESEND_FROM as the default sender when from is omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoSender, e.g. "Acme <hello@acme.com>". Falls back to RESEND_FROM. Domain must be verified.
toYesRecipient address(es), e.g. "user@example.com" or ["a@x.com","b@y.com"]
subjectYesEmail subject line
htmlNoHTML body (provide html and/or text)
textNoPlain-text body (provide html and/or text)
ccNoRecipient address(es), e.g. "user@example.com" or ["a@x.com","b@y.com"]
bccNoRecipient address(es), e.g. "user@example.com" or ["a@x.com","b@y.com"]
replyToNoReply-To address(es). Falls back to RESEND_REPLY_TO.
scheduledAtNoSchedule for later: ISO-8601 or natural language like "in 1 hour" / "tomorrow at 9am"
attachmentsNo
tagsNo
headersNoCustom headers, e.g. {"X-Entity-Ref-ID": "123"}
templateIdNoSend using a saved template instead of html/text
templateDataNoVariables to interpolate into the template
idempotencyKeyNoOptional Idempotency-Key to make retries safe (avoids duplicate sends)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations are present but minimal (readOnlyHint=false, destructiveHint=false). The description adds the default sender fallback behavior but does not discuss rate limits, authentication requirements, or error states. For a tool with complex behaviors, more explicit disclosure would improve transparency.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action and a concise list of features. Every phrase earns its place without redundancy or filler.

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

Completeness3/5

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

Given the tool's complexity (15 parameters, nested objects, no output schema), the description covers features comprehensively but omits return value structure or potential error scenarios. For a complex tool, 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.

Parameters3/5

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

Schema description coverage is high (87%), so most parameters are documented in the schema. The description adds value by explaining the default sender fallback for the 'from' parameter. However, this is the only parameter-level addition beyond what the schema provides. Baseline is 3 due to high coverage.

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

Purpose5/5

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

The description clearly states 'Send a single email via Resend', specifying the action (send), resource (email), and platform. It lists multiple supported features (HTML/text, cc/bcc, etc.), distinguishing it from sibling tools like send_batch_emails and send_broadcast.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives (e.g., batch sending or broadcast). Usage context is implied by the name and sibling list, but no guidance on exclusions or prerequisites beyond the parameter details.

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

test_sendA

Validate your sending setup by sending to Resend's sandbox addresses, which deterministically simulate outcomes WITHOUT hurting your reputation. Choose 'delivered', 'bounced', or 'complained'. Returns the resulting email ID so you can inspect_email it.

ParametersJSON Schema
NameRequiredDescriptionDefault
outcomeYesWhich scenario to simulate
fromNoSender (defaults to RESEND_FROM, else onboarding@resend.dev)
subjectNoSubject (default: 'resend-email-mcp test send')

TDQS

A4.7/5.0
Behavior5/5

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

Discloses deterministic simulation, no reputation impact, and returns email ID for inspection. Annotations (readOnlyHint=false, destructiveHint=false) are consistent and description adds context beyond them.

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

Conciseness5/5

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

Three sentences: purpose, options, return value. Efficient, front-loaded, no fluff. Every sentence earns its place.

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

Completeness5/5

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

Given parameter count, schema coverage, and annotations, the description covers purpose, behavior, return value, and constraints. No gaps identified.

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

Parameters4/5

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

Schema coverage is 100% with parameter descriptions. The description adds value by explaining the return value and that from/subject have defaults, and the outcome parameter's purpose is reinforced.

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

Purpose5/5

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

The description clearly states the tool validates sending setup using sandbox addresses, simulating outcomes without reputation damage. It distinguishes from siblings like send_email (real sending) and inspect_email (inspection).

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

Usage Guidelines4/5

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

The description implies using this tool for testing without harming reputation, and allows choosing outcomes. However, it does not explicitly state when not to use it or mention alternatives among siblings.

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

update_broadcastA
Idempotent

Update a draft broadcast's content or settings (from, subject, html, text, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
fromNo
subjectNo
reply_toNo
htmlNo
textNo
nameNo
preview_textNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already cover readOnlyHint, destructiveHint, and idempotentHint. Description adds the 'draft' qualification, which is useful, but does not mention side effects, permissions, or error conditions for non-draft broadcasts.

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

Conciseness5/5

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

Single sentence with no wasted words. Front-loaded with verb and resource, followed by examples. Efficient and to the point.

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

Completeness2/5

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

With 8 parameters, no output schema, and a schema-annotation contradiction (additionalProperties: false vs openWorldHint: true), the description lacks important details like return value, required draft status, and field interdependence. Incomplete for effective agent use.

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

Parameters2/5

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

Schema description coverage is low (13%). Description lists some parameters vaguely ('etc.') but does not explain them individually or provide constraints. Falls short of compensating for poor schema documentation.

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

Purpose5/5

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

Description clearly states verb 'Update' and resource 'draft broadcast', distinguishing it from sibling tools like send_broadcast or delete_broadcast. Listing example fields (from, subject, html, text) adds specificity.

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

Usage Guidelines4/5

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

Implicitly restricts usage to draft broadcasts, but lacks explicit when-not-to-use or alternatives. Context is clear enough for an agent to infer it should not be used on published broadcasts.

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

update_contactB
Idempotent

Update a contact's name, subscription state, or custom properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact ID or email address
first_nameNo
last_nameNo
unsubscribedNo
propertiesNo

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already provide idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description adds no additional behavioral context, such as whether the update is a full replace or partial merge, what happens to unspecified fields, or if there are any 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.

Conciseness4/5

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

The description is a single sentence that is concise and covers the main purpose. No unnecessary words. Could be slightly expanded without becoming verbose.

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

Completeness2/5

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

Given the tool has 5 parameters including a nested object and no output schema, the description is incomplete. It lacks information about return values, error handling, or the nature of the update (partial vs full). Idempotency hint is not leveraged in the description.

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

Parameters3/5

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

The description adds meaning beyond the schema for 20% coverage by mapping first_name/last_name to 'name', unsubscribed to 'subscription state', and properties to 'custom properties'. However, it does not explain the format or constraints of these parameters, especially the custom properties object.

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

Purpose5/5

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

The description clearly states the verb 'Update' and the resource 'contact'. It lists specific updatable aspects: name, subscription state, or custom properties. This distinguishes it from create, delete, get, and other contact tools among siblings.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., update_contact_property, create_contact). There is no mention of prerequisites, such as the contact must exist, or scenarios where it should not be used.

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

update_contact_propertyA
Idempotent

Rename a contact property.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
nameYesNew property name

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate idempotentHint=true, readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds the behavioral detail that the tool renames, but does not elaborate on potential side effects 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.

Conciseness5/5

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

The description is a single sentence that is front-loaded with the key action and resource. It is highly concise with no extraneous information.

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

Completeness4/5

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

The tool is simple and the description, while minimal, is largely adequate given the schema covers parameters and annotations cover safety. However, it could mention that the ID must refer to an existing property.

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

Parameters3/5

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

Schema coverage is 100%; both parameters have descriptions ('The resource ID' and 'New property name'). The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Rename a contact property' uses a specific verb 'rename' and resource 'contact property', clearly distinguishing it from siblings like create_contact_property, delete_contact_property, and get_contact_property.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as create_contact_property or delete_contact_property. It is a single sentence without context on prerequisites or exclusions.

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

update_contact_topicsA
Idempotent

Update a contact's topic subscriptions (opt-in / opt-out of specific topics).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact ID
topicsYesTopic subscription updates

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide idempotentHint=true and destructiveHint=false, indicating safe mutation. Description adds clarification that updates are opt-in/opt-out, which aligns with the schema. No contradictions.

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

Conciseness5/5

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

Single sentence, front-loaded with action and resource. No extraneous words, efficient and clear.

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

Completeness4/5

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

For a simple two-parameter tool with no output schema, the description is adequate. Could mention expected behavior if topic doesn't exist, but not critical given idempotentHint.

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

Parameters4/5

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

Schema has 100% coverage with descriptions for both parameters. Description adds meaning by framing topics as opt-in/opt-out, which complements the enum values (subscribed/unsubscribed).

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

Purpose5/5

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

Description clearly states the tool updates a contact's topic subscriptions, specifying opt-in/opt-out. Verb and resource are specific, and it distinguishes from sibling tools like create_topic, get_contact_topics, etc.

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

Usage Guidelines3/5

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

No explicit guidance on when to use vs alternatives. Context is clear for updating subscriptions, but lacks differentiation from other contact update tools like update_contact or remove_contact_from_segment.

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

update_domainA
Idempotent

Update a domain's settings: open/click tracking and TLS enforcement.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
open_trackingNoEnable open tracking
click_trackingNoEnable click tracking
tlsNoTLS policy: "opportunistic" (default) or "enforced"

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true and readOnlyHint=false, indicating a non-destructive write operation. The description adds no further behavioral context beyond the specific settings. It does not contradict annotations.

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

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently communicates the tool's purpose and key settings. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameter set (4 flat parameters, no output schema) and rich schema descriptions, the description adequately covers the tool's purpose and updateable fields. It could note that the domain must already exist, but the schema's required 'id' field implies that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The description merely restates the parameter names as 'open/click tracking and TLS enforcement', adding little semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('domain'), and lists the specific settings that can be updated (open/click tracking, TLS enforcement). This distinguishes it from sibling tools like create_domain or delete_domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for updating existing domains but lacks explicit guidance on when to use this tool vs alternatives. No mention of prerequisites or when not to use, which would help the agent differentiate from create or verify tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_emailA
Idempotent

Update a scheduled email — currently only the scheduled send time can be changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
scheduledAtYesNew schedule: ISO-8601 or natural language like "in 2 hours"

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide basic safety info (mutating, not destructive, idempotent). The description adds that only the scheduled send time can be changed, which is a key behavioral constraint. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and limitation. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema, annotations present), the description adequately conveys the scope and behavior. It is not overly detailed but sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, documenting both parameters fully. Description adds marginal value by reinforcing the limitation to scheduledAt, but does not provide additional semantic details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates a scheduled email and explicitly limits changes to the scheduled send time. This distinguishes it from siblings like cancel_email or send_email.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates the tool is used to change the schedule of an already scheduled email, implying it should be used when rescheduling is needed. It does not explicitly state when not to use or list alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_templateB
Idempotent

Update a template's name, subject, or body. Creates a new draft version.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
nameNo
subjectNo
htmlNo
textNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description notes that the tool 'Creates a new draft version,' which is valuable behavioral info beyond annotations. However, this conflicts with the idempotentHint=true annotation, as creating a new draft each call is not idempotent. The openWorldHint=true is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the action, target, and side-effect. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters and no output schema, the description provides essential purpose and effect but lacks details on the required 'id', the fate of existing drafts, or constraints. Sibling tools suggest a template lifecycle, but the description does not connect to it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 20% schema coverage, the description compensates somewhat by listing 'name, subject, or body' as updatable fields. However, it does not clarify that 'body' corresponds to both 'html' and 'text' parameters, nor does it explain the difference between them. Meaning is added but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action 'Update' and the resource 'template', and specifies the fields (name, subject, body) that can be updated. It clearly communicates the core purpose but does not explicitly differentiate from sibling tools like create_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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for modifying template content but provides no guidance on when not to use this tool or alternatives. For instance, it doesn't mention that publish_template should be used to publish a draft, leaving the agent without context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_topicB
Idempotent

Update a topic's name or description.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
nameNo
descriptionNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent, non-destructive, and read-write behavior. The description adds no additional behavioral context (e.g., id requirement, return value, permissions). It is consistent with annotations but does not enhance transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no extraneous words. Every word is necessary and contributes to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple update operation with 3 parameters and no output schema, the description is minimally adequate. However, it lacks information about return value, idempotency effect, and error cases. Annotations fill some gaps but output behavior remains unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (33%, only id described). The description mentions updating name or description, which adds some meaning beyond parameter names, but does not explain id or provide constraints like length or format for the string parameters. Insufficient compensation for low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a topic's name or description,' specifying the action (update), resource (topic), and mutable fields (name, description). This distinguishes it from create, delete, and get operations among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use, or related tools like update_contact_topics. The description is purely functional without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_webhookA
Idempotent

Update a webhook's endpoint URL, subscribed events, or enabled status.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID
endpointNo
eventsNo
statusNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is idempotent and non-destructive. The description adds no additional behavioral context beyond 'Update', which is consistent. No contradictions, but the description fails to disclose any extra traits like authentication requirements or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short, front-loaded sentence that efficiently conveys the tool's function with no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update tool with 4 parameters, the description covers the key aspects that can be updated. While it could mention whether updates are partial or full replacement, the annotations and schema provide additional context. The description is mostly complete for typical usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning by linking the updatable fields (endpoint URL, events, status) to the parameters endpoint, events, and status. With only 25% schema description coverage, this compensates partially. However, the required 'id' parameter is not mentioned in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'webhook', and lists specific updatable aspects (endpoint URL, subscribed events, enabled status). This distinguishes it from sibling tools like create_webhook, delete_webhook, and get_webhook, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for updating an existing webhook, but does not explicitly state when to use it vs alternatives (e.g., create_webhook for new webhooks) or provide any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_domainA
Idempotent

Trigger verification for a domain after adding its DNS records. Re-checks SPF/DKIM. Use diagnose_domain for a human-readable report of what is still missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe resource ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description discloses that it re-checks SPF/DKIM and implies it is not destructive. Annotations already provide idempotentHint=true and destructiveHint=false, and description aligns without contradiction. Lacks detail on failure behavior or prerequisites beyond DNS records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each adding specific value: trigger command, what it checks, and alternative. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple idempotent verification tool with a single parameter. Could mention if verification is asynchronous or describe the typical response, but the openWorldHint suggests output is unpredictable. Overall, it covers the essential aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add additional semantic detail for the 'id' parameter beyond what the schema provides, but the context makes it clear that 'id' refers to the domain ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (trigger verification), resource (domain), and context (after adding DNS records). Distinguishes from sibling 'diagnose_domain' by noting that tool provides a human-readable report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use ('after adding its DNS records') and provides an alternative ('Use diagnose_domain for a human-readable report of what is still missing').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 75 tool updatesv1.0.1
    • First observedadd_contact_to_segment
    • First observedanalyze_deliverability
    • First observedaudit_account
    • First observedcancel_email
    • First observedcreate_api_key
    • First observedcreate_broadcast
    • First observedcreate_contact
    • First observedcreate_contact_property
    • First observedcreate_domain
    • First observedcreate_segment
    • First observedcreate_template
    • First observedcreate_topic
    • First observedcreate_webhook
    • First observeddelete_api_key
    • First observeddelete_broadcast
    • First observeddelete_contact
    • First observeddelete_contact_property
    • First observeddelete_domain
    • First observeddelete_segment
    • First observeddelete_template
    • First observeddelete_topic
    • First observeddelete_webhook
    • First observeddiagnose_domain
    • First observedduplicate_template
    • First observedexplain_bounce
    • First observedget_broadcast
    • First observedget_contact
    • First observedget_contact_property
    • First observedget_contact_topics
    • First observedget_domain
    • First observedget_email
    • First observedget_email_attachment
    • First observedget_log
    • First observedget_received_attachment
    • First observedget_received_email
    • First observedget_segment
    • First observedget_template
    • First observedget_topic
    • First observedget_webhook
    • First observedinspect_email
    • First observedlist_api_keys
    • First observedlist_broadcasts
    • First observedlist_contact_properties
    • First observedlist_contact_segments
    • First observedlist_contacts
    • First observedlist_domains
    • First observedlist_email_attachments
    • First observedlist_emails
    • First observedlist_logs
    • First observedlist_received_attachments
    • First observedlist_received_emails
    • First observedlist_segment_contacts
    • First observedlist_segments
    • First observedlist_templates
    • First observedlist_topics
    • First observedlist_webhooks
    • First observedpreview_email
    • First observedpublish_template
    • First observedremove_contact_from_segment
    • First observedresend_raw
    • First observedsearch_logs
    • First observedsend_batch_emails
    • First observedsend_broadcast
    • First observedsend_email
    • First observedtest_send
    • First observedupdate_broadcast
    • First observedupdate_contact
    • First observedupdate_contact_property
    • First observedupdate_contact_topics
    • First observedupdate_domain
    • First observedupdate_email
    • First observedupdate_template
    • First observedupdate_topic
    • First observedupdate_webhook
    • First observedverify_domain

TDQS

A3.7/5.0

Scored across 75 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Even though there are many tools, each is unique: send_email vs send_batch_emails vs send_broadcast, and CRUD operations for different entities are well-separated. Descriptions remove any confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., create_domain, list_emails, delete_contact). There are no mixed conventions or vague verbs; the naming is predictable and clear.

Tool Count2/5

75 tools is excessive for an MCP server. While Resend has a broad API, this number far exceeds the typical well-scoped range (3-15). It feels like almost every API endpoint is exposed, making the tool surface difficult to navigate and maintain.

Completeness5/5

The tool set is extremely comprehensive, covering sending, receiving, contacts, segments, broadcasts, templates, domains, webhooks, logs, and account health checks. There are no obvious gaps; even edge cases like batch sending, preview, and testing are included.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A simple MCP server that enables users to send emails using Resend's API, integrating with tools like Cursor and Claude Desktop for seamless email composition and delivery.
    105
    17,286 npm
    571
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP (Multi-Agent Conversation Protocol) Server for interacting with Resend's email API, auto-generated using AG2's MCP builder to enable sending emails through natural language.
    -
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server for the PostStack email API that enables AI assistants to send transactional emails, manage contacts, handle inbound email threads, and perform deliverability checks through 84 curated tools.
    84
    24 npm
    1
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    An MCP server for the Resend email API, enabling AI assistants to send emails, manage contacts, audiences, and domains through natural language.
    18
    23 npm
    MIT