Skip to main content
Glama
mailkite

MailKite

Official

Read-only mirror. This repo is a generated, release-time mirror of the MailKite monorepo (the private source of truth) — development doesn't happen here. Install from npm and open issues against the MailKite docs.

Install

{
  "mcpServers": {
    "mailkite": {
      "command": "npx",
      "args": ["-y", "@mailkite/mcp"],
      "env": { "MAILKITE_API_KEY": "mk_live_…" }
    }
  }
}

Related MCP server: ClawAIMail

Tools

One tool per MailKite API method, generated from the shared contract. Full list + schemas: https://mailkite.dev/docs/libraries#mcp.

Use it from an AI agent — MCP + Agent connectors

MailKite speaks the Model Context Protocol: every API method is a tool your AI assistant (Claude, Cursor, …) can call — send mail, manage domains, search the docs, and give an agent its own inbox. Full guide: https://mailkite.dev/docs/ai-agents.

Hosted (recommended) — one-click OAuth, no key to copy:

claude mcp add --transport http mailkite https://mcp.mailkite.dev/mcp

In Claude Code you can also install the plugin:

/plugin marketplace add mailkite/claude-code
/plugin install mailkite@mailkite

Any chat/UI agent: "Add the MCP server at https://mcp.mailkite.dev/mcp and authenticate in the browser when prompted."

Local (static key, offline / CI):

{ "mcpServers": { "mailkite": { "command": "npx", "args": ["-y", "@mailkite/mcp"], "env": { "MAILKITE_API_KEY": "mk_live_…" } } } }

Give an agent its own inbox. Route inbound mail to a built-in inbox agent (the agent route action) and it answers, files, or escalates on its own — see https://mailkite.dev/docs/ai-agents.

All MailKite libraries

Same contract, every language — pick the one for your stack (full list: https://mailkite.dev/docs/libraries):

Library

Repo

Distribution

MailKite for Node.js

mailkite-node

npm

MailKite for Python

mailkite-python

PyPI

MailKite for Ruby

mailkite-ruby

RubyGems

MailKite for Java

mailkite-java

Maven Central

MailKite for PHP

mailkite-php

Packagist

MailKite for Go

mailkite-go

Go modules

@mailkite/cli

mailkite-cli

npm

@mailkite/mcp (this repo)

mailkite-mcp

npm

@mailkite/client

mailkite-js

npm

@mailkite/expo

mailkite-expo

npm

MailKiteClient

mailkite-swift

Swift Package Manager

dev.mailkite:mailkite-client

mailkite-kotlin

Maven Central

mailkite_client

mailkite-flutter

pub.dev

Generated from the shared MailKite API contract. © MailKite.

Available Tools

92 tools
mailkite_add_list_contactsAInspect

Add contacts (by id, ctr_…) to a list. Returns how many were newly added; contacts already on the list are ignored. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
contactIdsYes

TDQS

A3.9/5.0
Behavior4/5

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

The description adds useful behavioral detail beyond annotations: contacts already on the list are ignored, and the return value is the count of newly added contacts. It also discloses the auth requirement. 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?

Two concise sentences that front-load the action, return behavior, and auth requirement. No filler or redundant repetition of schema fields.

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 two-parameter mutation with annotations and no output schema, the description covers the core essentials: return value, duplicate handling, and auth. The main gap is explicit parameter-to-field mapping, but the tool name and ID pattern make this mostly inferable.

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 only 50% with minimal property descriptions ('Path parameter id' and an untyped string array). The description partially compensates by mentioning 'ctr_' contact IDs, but it does not explicitly map 'id' to the list ID or explain the format/limitations of contactIds.

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'), names the resource ('contacts') and target ('a list'), and clarifies contacts are identified by IDs with a 'ctr_' prefix. This clearly distinguishes the operation from sibling list/remove 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 provides context by noting the management session token requirement and implies the use case of adding contacts to a list. However, it does not explicitly discuss when not to use this tool or mention alternative siblings for removing/listing contacts.

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

mailkite_add_suppressionAInspect

Suppress an address so this account never sends to it again (reason defaults to manual). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional free-text note (who/why), shown alongside the entry.
emailYesThe address to stop sending to.
reasonNoWhy — defaults to manual when omitted or unrecognized.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds that the suppression is permanent ('never sends to it again'), that reason defaults to manual, and that a management session token is required. These are useful behavioral details beyond the annotations, though it doesn't discuss reversibility or duplicate handling, which are partly covered by the idempotentHint.

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, well-structured sentence that front-loads the primary action and includes the critical auth requirement. No filler or redundancy; every clause contributes.

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 mutation with three parameters and no output schema, the description covers the purpose, the permanent effect, the default behavior, and the auth need. Nothing essential is missing 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?

Schema description coverage is 100%, so all parameters (email, reason, note) already have clear descriptions and examples. The description adds little beyond the schema—only the default reason and the token requirement, which is not a parameter. It meets the baseline but does not elevate.

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 'Suppress' and the resource 'an address', with the effect 'this account never sends to it again'. It distinguishes from siblings like list_suppressions and remove_suppression by the action and outcome.

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 when to use this tool (to add a suppression) but does not explicitly mention alternatives or when not to use it. The sibling tools for listing and removing suppressions make the context clear, but the guidance is implicit rather than explicit.

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

mailkite_agentAInspect

Send a message to one of your inbox agents and get its reply. Defaults to the account's default agent; pass routeId or address to target a specific agent, or model to override the model. This is separate from inbound routing — it does not match or override routes. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional sender address the agent sees as the originator. Defaults to the account's API caller address.
htmlNoOptional HTML body. `text` is still required — the agent reasons over the plain-text content.
textYesThe message for the agent — it reads this as the incoming email body and decides what to do.
modelNoOverride the model the agent runs on for this call (e.g. claude-sonnet-4-6).
addressNoTarget the agent whose route matches this address. Alternative to routeId.
routeIdNoTarget a specific agent by its route id (rte_…). Omit to use the account's default agent (its most recently created agent route).
subjectNoOptional subject line the agent sees on the message.

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations, it adds that the tool requires an API key (mk_live_…) and clarifies an important non-effect: it does not match or override routes. It does not describe the reply shape or potential side effects of sending a message to an agent, but the annotations already signal non-read-only and non-destructive behavior.

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

Conciseness5/5

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

The description is compact and front-loaded: it states the main purpose, then covers default/target/model selection, then the routing exclusion, then authentication. Every sentence earns its place and no filler is present.

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 essential behavior, auth requirement, parameter-target interaction, and boundary relative to routing are covered. Since there is no output schema, a brief description of the reply shape or error handling would make it complete, but the description still provides enough for an agent to use 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?

The input schema already thoroughly describes all seven parameters, so the description mostly restates the targeting and model-override semantics rather than adding new meaning. It does not deepen the semantics of from, html, text, subject, address, or routeId beyond what is already in the schema.

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

Purpose5/5

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

The description opens with an unambiguous verb and resource: 'Send a message to one of your inbox agents and get its reply.' It also explicitly distinguishes the tool from inbound routing, saying it does not match or override routes, which differentiates it from siblings like mailkite_route and mailkite_create_route.

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?

It gives clear usage conditions: uses the default agent, or targets a specific agent via routeId or address, and optionally overrides the model. It also states a when-not boundary by clarifying it is separate from inbound routing, but it does not explicitly name a sibling alternative for regular outbound sending when the user does not want an agent.

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

mailkite_cancel_enrollmentA
DestructiveIdempotent
Inspect

Cancel one specific run by its enrollment id — the per-row action when you are looking at the enrollments table. To stop whatever is chasing a contact without knowing which run, use stopSequence. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already communicate destructiveHint, idempotentHint, and non-read-only behavior, so the description gets credit for adding the API key requirement and clarifying the scoped, per-run action. However, it does not describe side effects such as whether cancellation is reversible or what happens to related 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 short sentences, each earning its place: the main action and context, the alternative, and the auth requirement. Key information is front-loaded before branching to the alternative.

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 one-parameter destructive action with strong annotations, the description covers the core usage scenario, the alternative tool, and credential requirement. It is slightly incomplete in that it does not mention the expected result or effect, but this is minor for such a simple call.

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

Parameters4/5

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

The schema only says 'Path parameter id', but the description clarifies that the id is the enrollment id specifically targeting one run. This adds meaningful semantics over the bare schema for a single-parameter tool.

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 states a specific verb ('Cancel'), a precise resource ('one specific run by its enrollment id'), and explicitly frames it as the per-row enrollments-table action. It also distinguishes itself from the sequence-level stopSequence alternative, 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 Guidelines5/5

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

Explicitly tells the agent when to use this tool: for a single run from the enrollments table. It also names the alternative path for when the run is unknown ('use stopSequence') and contrasts the two conditions clearly.

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

mailkite_check_domain_availabilityA
Read-only
Inspect

Check whether a domain is available to register, and at what price. Read-only — no charge. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesQuery parameter `domain`.

TDQS

A3.5/5.0
Behavior4/5

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

The annotation already tells the agent readOnlyHint=true, but the description adds meaningful behavioral context: 'Read-only — no charge' and 'Requires a management session token'. These are material details beyond the structured annotations. It does not disclose the exact return format, but the read‑only nature is well covered.

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

Conciseness5/5

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

Three short sentences, each earning their place: the core purpose is front-loaded, followed by the no-charge caveat and the auth requirement. No fluff or irrelevant detail.

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, the description could clarify what the response will contain beyond 'availability and price', such as whether the price is present only when available or the format of the status. It also doesn't explain error cases or behavior for domains already registered. Still, for a one-parameter, read-only check, the essential trigger is clear 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 schema description for the single parameter is minimal ('Query parameter `domain`.'), but schema coverage is 100%. The tool description adds no further meaning for the domain parameter — no format, examples, or guidance on accepted values — so the description does not improve on the schema.

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 'check' and the resource 'domain availability', and adds the outcome 'at what price'. However, it does not explicitly differentiate from the sibling mailkite_check_subdomain; a reader must infer that 'domain' is not 'subdomain'.

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 only guidance offered is 'Requires a management session token', which is a prerequisite rather than a usage scenario. It does not say when to use this tool (e.g., before registering a domain) or when to avoid it and prefer an alternative.

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

mailkite_check_subdomainA
Read-only
Inspect

Check whether a free subdomain label can be claimed. Read-only and cheap — call it as the user types. reason explains a rejection and is safe to show verbatim. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesQuery parameter `name`.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds 'cheap' (cost/performance), 'requires a management session token' (authentication requirement), and that the 'reason' field is safe to show verbatim (output safety). These are valuable behavioral disclosures that the annotations do not cover.

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 that front-load the core purpose, then add usage and behavioral context. No wasted words; every sentence adds value.

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-only check with one parameter, the description covers purpose, when to invoke, authentication requirement, and output behavior. Nothing essential is missing for an agent to call it correctly.

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

Parameters3/5

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

Schema coverage is 100% with a description 'Query parameter `name`.' which is tautological. The tool description does not clarify that 'name' refers to a subdomain label, though it is implied by the tool name and purpose. The schema does the heavy lifting minimally, and the description adds no extra semantic value, 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 the action ('check whether a free subdomain label can be claimed') with a specific resource (subdomain label) and distinguishes it from related tools like claim_subdomain or suggest_subdomain. It is unambiguous and uses a specific verb.

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 explicit guidance to call it 'as the user types' and notes that the 'reason' field is safe to display verbatim. It does not explicitly name alternatives or conditions for not using it, but the context implies it is a pre-check before claiming. This is clear but could be strengthened by naming the sibling tool for claiming.

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

mailkite_claim_subdomainAInspect

Claim a free MailKite subdomain — a <label>.<base> host on a zone we run (call suggestSubdomain for the current base; the pool changes over time and more than one may be offered). The fastest path to a sending identity: we host the zone, so it comes back already verified with an empty dns array — nothing for the customer to publish. Use it when you want onboarding to work without asking anyone to touch DNS; bring your own domain with createDomain when you want mail to come from your own name. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
subdomainYesThe label to claim: 3–32 characters, lowercase letters, digits and hyphens, no leading or trailing hyphen, and not a reserved word. Just the label — a full hostname (`<label>.<base>`) is also accepted and the base stripped.

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already cover readOnly (false), idempotent (false), and destructive (false). The description adds meaningful behavioral context beyond the annotations: the resulting subdomain comes back already verified with an empty `dns` array, so the agent knows no DNS publishing is needed. It also notes the pool changes over time, which impacts repeated claims. A minor gap is not mentioning what happens on duplicate/conflicting label, but the provided detail goes beyond the structural 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 tight three-sentence block: it states the purpose, the behavioral guarantee (already verified), the use-case tradeoff vs createDomain, and the auth requirement. Every sentence adds distinct value and none are filler. It is front-loaded with the most decisive fact ('Claim a free MailKite subdomain') and then scaffolds the necessary decisions around the call.

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?

There is no output schema, but the description provides a clear expectation of the result: a subdomain that is already verified with an empty dns array. It also covers prerequisites (management session token, the base from suggestSubdomain), and distinguishes the use case from a custom-domain route. It doesn't spell out the exact response shape (e.g., whether it returns the full hostname) but for a single-parameter claim endpoint it is complete enough for an agent to call it correctly.

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

Parameters4/5

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

Schema coverage is 100% with a thorough `subdomain` description, but the tool description enriches the meaning: it explains that the base is dynamic and should be fetched from `suggestSubdomain`, and that the label forms a full host on a MailKite-managed zone. This goes beyond the schema's character-format details and tells the agent how to obtain the required base, which is valuable 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 opens with a specific verb and resource ('Claim a free MailKite subdomain') and precisely defines the object as a `<label>.<base>` host on a zone MailKite runs. It also distinguishes itself from the sibling `createDomain` by noting the difference between a managed subdomain and a bring-your-own-domain path, so an agent can immediately tell this apart from other domain tools.

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

Usage Guidelines5/5

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

It tells the agent when to use this tool ('when you want onboarding to work without asking anyone to touch DNS') and explicitly says the alternative is `createDomain` for a custom domain. It also points to `suggestSubdomain` for the current `base` and states the requirement for a management session token, leaving no ambiguity about prerequisites or alternatives.

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

mailkite_create_app_passwordAInspect

Create an app password for one domain and address pattern. Hand it to a mail client or an agent — the secret is returned once and never again. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional name shown in the dashboard (e.g. the client or agent holding it).
domainYesThe hosted domain this password covers. Must belong to the calling account.
addressNoLocal-part pattern within the domain — `*` (default, every address), `hello`, `support-*`, `*-agent`. No `@`: the domain is already named.
domainIdNoThe domain by id (dom_…), as an alternative to `domain`.
protocolsNoWhat the password may authenticate. Defaults to `["imap"]`.

TDQS

A4.4/5.0
Behavior5/5

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

The annotations only record non-readOnly, non-idempotent, and non-destructive hints, so the description carries the behavioral burden. It explicitly discloses that the password is returned exactly once and never again, plus the authentication prerequisite. This is materially important for how an agent should handle the result.

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

Conciseness5/5

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

The description is three short sentences with the action front-loaded, followed by the crucial secret-disclosure warning and the auth requirement. Every sentence 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?

All parameters are fully described by the schema, and the description covers the non-obvious output caveat: the secret will not be returned again. It does not spell out the exact return envelope or explicitly route to rotate/list/delete siblings, but those are minor for a straightforward creation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter objects already fully define label, domain, address, domainId, and protocols. The description only echoes 'domain and address pattern' and adds little beyond the schema, which is the baseline case.

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 identifies the verb ('Create'), the resource ('app password'), and the scope ('for one domain and address pattern'). Its use case, handing it to a mail client or agent, also distinguishes it from the sibling lifecycle tools (list, rotate, delete, update).

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?

It clearly communicates when this tool is relevant: when a password must be generated for a client or agent, and it flags the management session token requirement. It does not explicitly name alternatives for lost secrets or rotation, so it is not maximally explicit, but the intended context is clear.

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

mailkite_create_broadcastBInspect

Create a broadcast draft. from is required; set audience to { type: "all" } or { type: "list", id: "lst_…" }. Returns the broadcast with its id (bct_…). Send it with sendBroadcast. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYes
htmlNo
nameNo
textNo
previewNo
replyToNo
subjectNo
audienceNo
templateIdNo
footerAddressNo

TDQS

B3.2/5.0
Behavior1/5

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

The description claims the tool creates a broadcast draft, which is a write operation. Annotations have readOnlyHint=false, so there is no contradiction. However, the description does not disclose any behavioral traits beyond the action itself, such as whether it validates content, what happens on failure, or side effects. With readOnlyHint=false and no further context, the description adds little to the annotation. However, the bar is lower because readOnlyHint is already false, but the description should still add context; it mentions the return value and the requirement for a token, which is some value. So score 3 would be appropriate, but I need to justify: it does mention 'returns the broadcast with its id' and 'requires a management session token', which are behavioral details beyond the annotation. So score 3.

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 3 sentences, concise and structured logically: purpose, key parameter guidance, return and next step, and auth requirement. It is front-loaded with the main action. No fluff. Score 4 because it could be slightly more compact, but it's efficient.

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 10 parameters, no output schema, and no annotation beyond readOnly, the description is relatively complete: it covers required field, audience format, return value, and auth. However, it does not explain the meaning of other parameters (e.g., replyTo, footerAddress, templateId) or any validation rules. It also doesn't mention the 'filter' audience type that appears in the schema enum. This is a significant gap for a complex tool, so score 3.

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 0%, so the description must compensate. It clarifies that 'from' is required, and explains the 'audience' parameter with specific formats (type: 'all' or type: 'list' with id). It also mentions 'name', 'subject', 'html', etc. implicitly by listing parameters, but does not explain each. It partially compensates by giving examples for audience, but not for other parameters like templateId or footerAddress. This is a moderate compensation, so score 3.

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 that the tool creates a broadcast draft and returns its id. It distinguishes itself from siblings like mailkite_send_broadcast (which sends) and mailkite_update_broadcast (which modifies). However, it does not explicitly contrast with those siblings, but the action is clear.

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?

It indicates when to use it (to create a draft) and that sending is a separate step (sendBroadcast). It also gives a prerequisite: requires a management session token. It does not explicitly state when not to use it or mention alternatives, but the step-by-step guidance is helpful.

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

mailkite_create_domainBInspect

Add a domain. Returns the domain + DNS records. Paid plans may pass email_provider_id to choose a provider (list available providers with listEmailProviders); free plans are always pinned to the platform default (SES US East 2 production). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations only supply readOnlyHint=false, idempotentHint=false, and destructiveHint=false, which tell the agent little. The description adds meaningful behavior: the return includes DNS records, provider behavior depends on plan, and a management session token is required. It would be even better if it explained idempotency/duplicate handling, but the description is fairly informative beyond the annotations.

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

Conciseness4/5

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

The description is three sentences and front-loads the primary action and return value. The second sentence packs a lot of plan/parameter information into one sentence, which is somewhat dense but not bloated. Every sentence earns its place, though the mention of email_provider_id creates confusion.

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?

For a low-complexity tool with one parameter and no output schema, the description covers about returns, auth, and plan behavior. However, the missing/extraneous parameter mismatch (email_provider_id in description but not schema) is a serious gap that prevents correct invocation, and it never explains how the parameter should be formatted or what additional setup (DNS verification, existence pitfalls) follows creation.

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 0%: the only parameter, `domain`, is not described at all. Worse, the description references `email_provider_id` and tells callers they 'may pass' it, but the input schema does not include that parameter, so an agent following the description would send an invalid request. This is misleading and harms correct invocation.

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 uses a clear action verb with a resource — "Add a domain" — and adds that the tool returns domain plus DNS records, which distinguishes it from many sibling tools. However, it does not explicitly differentiate from mailkite_register_domain or verify-related siblings, so it is just short of a 5.

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 gives useful contextual guidance: it says the tool requires a management session token, and explains how provider selection works on paid vs. free plans with a pointer to listEmailProviders. There is no explicit "when to use this vs register_domain or verify_domain", so the agent is left to infer the boundary between these siblings.

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

mailkite_create_listAInspect

Create a contact list. Returns the list with its id (lst_…); add contacts with addListContacts. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations, it discloses the return shape ('list with its id (lst_…)') and the auth requirement ('management session token'). It does not discuss duplicates, limits, or errors, but for a simple create operation the added context is meaningful.

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 action, with no filler. Each clause adds useful information: action, return value, next step, and auth requirement.

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 one-parameter creation tool with no output schema, this is complete: the return value is specified, the auth requirement is stated, and the natural follow-up action is mentioned. An agent can invoke this tool correctly with minimal guessing.

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?

There is only one required parameter, name, and its meaning is reasonably inferable from the property name and 'contact list.' However, the description never explicitly explains the name parameter or any constraints, and the schema has 0% description coverage, so this is a minor gap.

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 specific verb ('Create'), the resource ('a contact list'), and the expected return (the list with its id). It also distinguishes itself from the closely related add-contacts operation by explicitly referencing addListContacts.

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 useful procedural context: create the list first, then add contacts via addListContacts. It also notes the auth prerequisite. It does not explicitly state exclusions versus other list-manipulation siblings, but the workflow is clear.

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

mailkite_create_realtime_tokenAInspect

Mint a short-lived, single-use token that authorises one Realtime API connection. For browsers: EventSource cannot set headers, so this is what a page passes as ?token= instead of putting an API key in a URL. Inherits the calling credential's scope, expires in five minutes, and burns on first use. The stream itself is GET /v1/realtime — a subscription, not a request/response call, so it is contracted in sdks/spec/realtime.json rather than here. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

The annotations carry essentially no signal (all three hints are false), so the description carries the full burden — and it pays: it discloses five-minute expiry, single-use burn-on-first-use, scope inheritance from the calling credential, and the API-key requirement (mk_live_…). These are exactly the behavioral facts an agent needs and none are visible in the annotations or schema.

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?

Five sentences, each earning its place: core purpose, browser use case, expiry/burn/scope behavior, the stream-boundary clarification, and authentication requirement. Information is front-loaded with the primary verb and resource in the first sentence, with zero filler 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?

For a 0-parameter tool with no output schema, the description covers purpose, context, behavior, lifecycle, and auth. The sole gap is that the return value (the token string) is only implied by 'this is what a page passes as ?token=' rather than stated explicitly; 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.

Parameters4/5

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

The tool takes 0 parameters, so the schema description coverage is trivially complete and there is nothing for the description to annotate. With 0 params, the baseline is 4, and the description provides the relevant operational semantics (token lifetime, scope, auth) anyway.

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 first sentence gives a specific verb ('Mint') and a specific resource ('short-lived, single-use token for one Realtime API connection'). This clearly distinguishes the tool from all siblings, which handle webhooks, routes, templates, domains, sequences, and other mail/domain concerns. Even without the title, the purpose is unambiguous.

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

Usage Guidelines4/5

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

The description explains a concrete when-to-use: browsers where EventSource cannot set headers, where the token is passed as `?token=` instead of an API key in a URL. It also delineates the boundary of what the tool does not do ('the stream itself is GET /v1/realtime… contracted in sdks/spec/realtime.json rather than here'). It lacks an explicit mention of alternative tokens like scoped keys or app passwords, so it stops short of a 5.

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

mailkite_create_routeAInspect

Create a route (match, action, destination). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
matchYesAddress pattern: exact, *@domain, addr+*@domain, or /regex/.
actionNoWhat to do with matching mail. Defaults to webhook.
agentPromptNoRequired for action agent — instructions for the inbox agent.
destinationNoRequired for action webhook (URL) or forward (address).
agentContextNoFor action agent: how much mail the agent may read once the sender is verified (they replied to an earlier agent message from a DMARC-passing address). 'message' (default) = only the incoming email; 'thread' = this conversation; 'sender' = all past mail with this sender.
agentForwardToNoFor action agent: addresses the inbox agent's forward tool may send to. The agent can always forward to your account email and any address on a verified domain you own; this adds extra approved addresses (e.g. an escalation inbox).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already indicate this is a non-read-only, non-idempotent operation, and the description adds a useful behavioral/operational detail: a management session token is required. This is beyond what the annotations provide and helps the agent avoid invoking the tool with the wrong authentication 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?

The description is two short sentences with no filler. The core operation is front-loaded, and the auth requirement is stated immediately after. It earns its place even if the parenthetical oversimplifies the optionality of some fields.

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 schema carries most of the parameter semantics, and the description supplies the key auth prerequisite. However, there is no output schema and no mention of what the tool returns or what side effects occur beyond creating a route, and it offers no guidance on how this relates to route siblings. For a six-parameter creation tool with conditional agent fields, this is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, with detailed per-parameter descriptions including enums, defaults, and conditional requirements. The description's parenthetical '(match, action, destination)' is a helpful shorthand but adds no semantic meaning beyond what the input schema already provides, so the baseline score of 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource ('Create a route') and enumerates the core components (match, action, destination). It is clear about what the tool does, though it does not explicitly distinguish itself from sibling tools like mailkite_list_routes, mailkite_delete_route, or mailkite_deliver_to_route.

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 states an operational prerequisite — a management session token — which helps the agent know when the call is authorized. It does not explain when to prefer this tool over route-related siblings, nor does it mention preconditions such as a verified domain or configured webhook destination, so usage is mostly implied by the verb 'create'.

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

mailkite_create_scoped_keyAInspect

Create a key scoped to one domain. Ideal for per-site installs (e.g. a WordPress plugin) — the site never holds the account master key. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional label shown in the dashboard (e.g. which site/integration holds this key).
domainIdYesThe domain (dom_…) the new key is limited to. Must belong to the calling account.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as non-read-only, non-idempotent, and non-destructive. The description adds valuable context beyond those annotations: it requires a management session token and explains the security property that the site never holds the master key. It does not detail response behavior, but the essential create-operation traits are covered.

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

Conciseness5/5

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

Two sentences with no filler. The core purpose is front-loaded, followed by a practical use case and an important auth prerequisite. Every clause 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?

For a two-parameter creation tool with rich schema descriptions, the description covers the purpose, scope, typical deployment, and authentication requirement. The lack of an output schema means the return value is not explicitly described, but this is not critical for invoking 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 description coverage is 100%, and the parameter descriptions are already specific, including examples and the requirement that the domain belong to the calling account. The description reinforces the domain-scoping concept but does not add significant parameter-level 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?

The description clearly identifies the operation as creating a key limited to one domain, using a specific verb and resource. It also differentiates from account-level credentials by noting the site never holds the master key, making the tool's specific role obvious among many siblings.

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 concrete use case (per-site installs like a WordPress plugin) and a prerequisite (management session token). It does not explicitly contrast this tool with alternatives such as app passwords or account-wide API keys, so it stops short of a full when-to-use/when-not-to-use statement.

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

mailkite_create_sequenceAInspect

Create a sequence: a declared input shape, the steps a contact walks over time, and zero or more triggers. A sequence is a function — input is its signature, and every door must satisfy it, so a step's {{input.field}} means the same thing however it was started. Created as a draft unless you pass status "active". The whole definition is validated up front and every problem is reported at once, so you fix a program in one pass rather than one 400 at a time. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoDefault sender for every send step, on a verified domain. Required unless every send step carries its own `from`, or trigger.type is "send" (which inherits the triggering message's sender).
nameYesUnique handle for this account; 1-64 chars of letters, digits, dot, dash, or underscore, starting alphanumeric.
inputNoThe sequence's input signature: the shape every door must supply. A sequence is a function and this is how you declare its parameters — steps then read them as {{input.field}}, and a condition can branch on them. Omit it entirely for "anything goes"; you should not need a schema to write a two-step drip.
stepsYesAt least one step, and at least one of them a `send` — a sequence that never sends is a no-op that still costs a row per contact.
exitOnNoSequence-level exits, evaluated before EVERY step. `goal` completes the enrollment — they did the thing, stop chasing, which is the difference between a dunning sequence and harassment. `cancel` abandons it.
statusNoDefaults to `draft`. A sequence enrolls nobody until it is `active`.
reentryNo`once` (default) refuses to enroll a contact already in flight. `always` restarts them: the in-flight enrollment is canceled and a new one begins. `cooldown:<duration>` (e.g. "cooldown:30 days") re-enrolls only when that long has passed since their last enrollment.
triggersNoDoors into this sequence. A bare string is shorthand for { "event": "<name>" }. Replacing the set never bumps the sequence's version and never touches an enrollment in flight. A sequence with no triggers is enrolled only by naming it on a send or calling enroll — which is what "manual" used to mean.

TDQS

A4.1/5.0
Behavior4/5

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

The annotations only provide generic false hints, so the description carries the main behavioral load. It explicitly discloses the draft-by-default behavior, the up-front validation of the entire definition, the need for a mk_live_ API key, and the fact that a sequence enrolls nobody until active. This is meaningful and consistent with the annotations; there is 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.

Conciseness4/5

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

The description is front-loaded with the core purpose and then gives short, useful behavioral details about draft status, validation, and API key requirement. The metaphor of a sequence as a function is compact and adds semantic value without bloating the 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?

This is a complex 8-parameter creation tool with no output schema, so the description plus schema still provides enough context to invoke it correctly. The coverage of input semantics, trigger behavior, and default status is strong; task only open concept is the exact output shape, which the description does not describe, but it remains enough for correct invocation.

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

Parameters4/5

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

The input schema already documents all 8 parameters, so the baseline is 3. The description adds genuine extra semantics on top by explaining input as re shared function signature that every trigger must satisfy, and by clarifying what a missing/empty triggers set means. This goes beyond the kind of line-level field descriptions already present in the schema.

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

Purpose5/5

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

The opening sentence says "Create a sequence" and immediately names the resource's core parts: a declared input shape, the steps a contact walks over time, and triggers. This makes both the verb and the resource unambiguous, and it is easy to tell this tool from list_sequence/get_sequence/update_sequence/delete_sequence peers.

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 gives useful operational context: a sequence starts as a draft unless status active, and a sequence with no triggers can still be used through a send or explicit enroll. However, it does not explicitly say when to choose this tool over alternatives like update_sequence, start_sequence, or stop_sequence, so the tool-selection guidance is implicit rather than direct.

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

mailkite_create_templateAInspect

Create a template. Pass baseId to clone a base template into your own, or provide name/subject/html/text/theme directly. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoRendered, send-ready HTML.
jsonNoEditor (TipTap) JSON source, for re-editing in the dashboard.
nameNoTemplate name. Required unless baseId is given.
textNoPlaintext fallback.
themeNoBrand tokens JSON (bg, surface, primary, text, logo, …).
baseIdNoClone this base template (base_…) into your own. When set, name is optional (defaults to the base's name).
subjectNoDefault subject line for sends.

TDQS

A4/5.0
Behavior3/5

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

With no meaningful annotations beyond readOnlyHint=false, the description carries the burden of behavioral disclosure. It usefully discloses the management session token requirement and the two mutation modes, but it does not mention side effects, ownership semantics of cloned templates, or what the call returns. That is adequate but not 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 sentences, front-loaded with the core action, then mode alternatives, then the auth requirement. Every sentence earns its place with no filler.

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

Completeness4/5

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

For a 7-parameter tool with zero required parameters and complete schema documentation, the description covers the critical decision (baseId vs fields) and the auth precondition. It does not describe return values, but that is a minor gap given the absence of an 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 description coverage is 100%, so the baseline is 3. The description lists the relevant fields by mode but adds no semantics beyond the schema, such as validation rules, format expectations, or relationships between parameters.

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 names the specific operation—creating a template—and clearly distinguishes the two intended paths: cloning via baseId or supplying content fields directly. This makes it easy for an agent to tell it apart from sibling list/get template operations.

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 clear situational guidance: use baseId to clone a base template, or provide name/subject/html/text/theme directly. It also notes the management session token requirement. It stops short of explicitly naming alternatives such as mailkite_list_base_templates or stating when not to use this tool, but the mode-based guidance is strong.

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

mailkite_create_triggerAInspect

Attach a trigger: when this event arrives, enroll the contact it is about. Attaching never bumps the sequence's version and never touches anyone already in flight — a trigger is a fact about the outside world, a sequence is a program, and they change on different rhythms. The sequence needs a from address first, since an event-triggered enrollment has no message to inherit a sender from. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
eventYes
filterNo
enabledNoDefaults to true.

TDQS

A3.9/5.0
Behavior4/5

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

The annotations only state readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context: attaching never bumps the sequence version and never touches contacts already in flight, and it requires an API key. It does not describe response/error behavior, but it meaningfully supplements the sparse annotations.

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

Conciseness4/5

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

The action is front-loaded and the sentences are mostly purposeful. The 'fact about the outside world' metaphor is slightly decorative but helps justify why version bumps are irrelevant. There is no redundant restatement of the tool name or schema.

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 tool has four parameters, including a rule-based filter, and no output schema. The description covers the core purpose and prerequisite but does not explain `filter`, `enabled`, or the expected response shape. It is adequate for a basic call but leaves gaps an agent would need to resolve.

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 only 50%, so the description needed to compensate for undocumented parameters. It explains `event` and indirectly `id`, but `filter` is entirely unexplained and `enabled` is only noted in the schema. For a tool with a rule reference, this leaves a significant semantic gap.

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 opens with a specific verb and resource: 'Attach a trigger', and clarifies the exact behavior: 'when this event arrives, enroll the contact it is about.' It also distinguishes triggers from sequences, helping an agent tell this apart from sibling sequence and trigger tools.

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?

It gives a concrete prerequisite: the sequence needs a `from` address before event-triggered enrollment, because there is no message to inherit a sender. It does not explicitly name alternatives or exclusion conditions, but the conceptual contrast with sequences and the prerequisite provide clear context for when to use it.

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

mailkite_delete_app_passwordA
DestructiveIdempotent
Inspect

Revoke an app password. Takes effect immediately — any IMAP session or API call using it stops authenticating. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already state destructiveHint=true and readOnlyHint=false, which signal mutation. The description adds critical behavioral details: it explicitly says the effect is immediate ('Takes effect immediately') and describes the consequence ('any IMAP session or API call using it stops authenticating'). It also discloses the authentication requirement ('Requires a management session token'). This goes beyond the annotations and helps the agent anticipate 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 three short sentences, each with a distinct purpose: the action, the immediacy and impact, and the prerequisite. It is front-loaded with the verb and resource, and every sentence adds value without redundancy. This is an model of conciseness.

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 tool (one parameter, no output schema, no nested objects), the description is complete enough: it states the action, the effect, and the required token. It could mention what the response is (e.g., success/failure), but that is typically expected for a delete operation, and the user asked for broad context. The annotation `idempotentHint=true` also implies repeated calls are safe, which the description does not need to repeat.

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 describes the only parameter `id` with coverage 100%, but the schema's description is minimal ('Path parameter `id`.'). The tool description does not add any detail about what `id` refers to (e.g., the app password ID). However, because the schema fully documents the parameter's existence and the tool purpose is clear, the description does not need to compensate heavily. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Revoke an app password') and the resource ('app password'), which is precise and immediately differentiates it from siblings like `mailkite_update_app_password` (which modifies, not revokes) and `mailkite_rotate_app_password` (which replaces). The verb 'Revoke' is specific and unambiguous.

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

Usage Guidelines4/5

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

The description implies when to use it (when you need to invalidate an app password) but does not explicitly state when NOT to use it or mention alternatives like rotation. However, the sibling list includes `mailkite_rotate_app_password`, which is the obvious alternative for when you need to replace rather than just revoke. The requirement for a management session token is mentioned, which is a clear gate for use.

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

mailkite_delete_broadcastA
DestructiveIdempotent
Inspect

Delete a broadcast draft. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4/5.0
Behavior4/5

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

With annotations already declaring readOnlyHint=false, idempotentHint=true, and destructiveHint=true, the description's burden is reduced. It adds two useful behavioral details beyond the annotations: the auth requirement (management session token) and the 'draft' restriction, implying only drafts are deletable. No contradiction with the annotations.

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

Conciseness5/5

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

A single, direct sentence with no filler. The core action is front-loaded, and the auth prerequisite is appended without bloating the description. 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?

For a one-parameter delete operation with rich annotations covering safety semantics, the description adequately covers what the tool does and a key prerequisite. Omissions like return behavior or edge cases (e.g., deleting a sent broadcast) are minor given the simple shape, but there is still slight room for more explicit guidance.

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% because 'id' has a description, but that description ('Path parameter `id`.') is tautological and uninformative. The tool description hints that 'id' refers to a broadcast draft, which adds some context, but it never explicitly maps the parameter to the resource. This aligns with the baseline 3 for high 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 opens with a specific verb and resource: 'Delete a broadcast draft.' The qualifier 'draft' narrows the scope, and the resource is distinct from the many other delete tools in the sibling list (delete_sequence, delete_domain, etc.). An agent can tell exactly what this tool operates on without ambiguity.

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 should be used when a broadcast draft needs to be deleted and even states a prerequisite ('Requires a management session token'). However, it offers no explicit when/not-to-use guidance, no exclusions, and does not differentiate itself from sibling deletion tools beyond the resource name in the tool name.

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

mailkite_delete_domainA
DestructiveIdempotent
Inspect

Remove a domain. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A3.6/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, and the description adds the auth requirement ('Requires a management session token'), which is valuable context. It does not contradict annotations and provides a meaningful behavioral detail beyond what the annotations state. However, it does not describe side effects like cascading removal of associated resources, but that is not strictly necessary given the destructive hint.

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 with zero wasted words. It front-loads the primary action ('Remove a domain') and immediately follows with the key prerequisite. It is concise and well-structured for quick parsing by an agent.

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

Completeness4/5

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

For a simple delete operation with a single required parameter and no output schema, the description provides sufficient context: what the tool does and a key requirement. The destructive nature is covered by annotations, and the id parameter is sufficiently clarified. It could mention the permanence of the action, but the destructiveHint annotation already conveys that, so the description is complete enough for this tool's 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?

The schema has one parameter 'id' with description 'Path parameter id.' The tool description adds the context that the id refers to the domain to be removed, which is a slight enhancement. Since schema coverage is 100% and the description adds only marginal meaning (domain id), 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 states a clear verb ('Remove') and resource ('domain'), making the tool's purpose obvious. It does not explicitly differentiate from other delete tools in the sibling list, but the resource type (domain) is distinct enough that an agent would not confuse it with deleting webhooks or sequences. The purpose is specific and unambiguous.

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

Usage 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 mentions a requirement (management session token) but does not explain when deletion is appropriate, what prerequisites exist (e.g., domain must be verified), or when to use other domain-related tools like verify_domain or list_domains. The agent is left to infer context.

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

mailkite_delete_listA
DestructiveIdempotent
Inspect

Delete a contact list. The list is removed; the contacts themselves are kept. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already communicate that the tool is destructive but not read-only. The description adds useful context beyond the annotations: the list is removed while contacts are preserved, and a management session token is required. It is transparent about scope and authentication requirements, though it does not disclose response or error behavior.

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

Conciseness5/5

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

The description is three short sentences, with the core action front-loaded. Every sentence contributes either the operation, the crucial non-destructive side effect (contacts preserved), or the authentication requirement. There is no filler 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?

For a tool with one parameter, clear destructive intent from annotations, and no nested structures, the description covers the action, scope, and auth requirement. It does not describe the success or error return shape, and no output schema exists, but this is a minor gap for a simple delete-list 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?

The single required parameter 'id' is covered by the schema, so the schema already supplies all parameter information. The description implicitly indicates that the id refers to the contact list, but it adds no deeper detail about the id's format, source, or lifecycle. Baseline 3 is appropriate for full 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 states a specific verb ('Delete') and resource ('contact list'), and adds a key distinguishing detail: the contacts themselves are kept. This clearly distinguishes it from sibling tools like mailkite_remove_list_contact, which operates on an individual contact rather than a whole list.

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 given about when to use this tool rather than alternatives, nor are exclusions or prerequisites stated beyond a management session token requirement. There is no mention of scenarios where deleting a list would be inappropriate or where mailkite_remove_list_contact or mailkite_delete_broadcast would be a better option.

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

mailkite_delete_routeA
DestructiveIdempotent
Inspect

Delete an inbound routing rule by id. Pair with createRoute to register and tear down a webhook destination — e.g. an automation platform subscribing on enable and cleaning up on disable. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description doesn't need to restate those. It adds value by noting the requirement for a management session token, which is a behavioral prerequisite not visible in the schema or annotations. It also frames the destructive action as a cleanup step, which is useful context. It doesn't 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 two sentences with no wasted words. The core action is front-loaded, followed by a practical pairing example and a security prerequisite. Every sentence 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?

For a single-parameter delete tool with annotations covering destructive/idempotent behavior, the description is nearly complete. It covers the action, the resource, the pairing context, and the auth requirement. The only minor gap is that it doesn't describe the return value or error behavior, but with no output schema and a simple delete operation, this is acceptable.

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 'id' parameter is described as 'Path parameter `id`.'), so the schema already documents the parameter. The description adds no additional meaning about the id beyond what the schema provides, but it does clarify the resource type ('inbound routing rule') which indirectly helps. Baseline 3 is appropriate given full schema coverage.

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

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 an inbound routing rule by id'), identifies the resource ('inbound routing rule'), and distinguishes it from sibling tools like mailkite_delete_webhook and mailkite_delete_tracking_webhook by specifying 'routing rule'. It also names the paired creation tool (createRoute), which further disambiguates it.

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

Usage Guidelines5/5

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

The description explicitly explains when to use this tool: pair with createRoute to register and tear down a webhook destination, e.g., an automation platform subscribing on enable and cleaning up on disable. This provides clear context and an example use case, effectively guiding an agent on when to invoke it.

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

mailkite_delete_scoped_keyA
DestructiveIdempotent
Inspect

Revoke a domain-scoped key. Takes effect immediately. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover destructiveness and idempotency. The description adds useful behavioral context: revocation takes effect immediately and requires a management session token, which goes beyond what the annotations alone state. There is no contradiction with the annotation values.

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

Conciseness5/5

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

The description is three short sentences with zero filler. It front-loads the core action and then adds immediate-effect and authentication details, which is highly efficient for an AI agent.

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

Completeness4/5

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

For a simple single-parameter destructive operation, the description is reasonably complete. It states the effect, timing, and auth requirement. A slightly fuller note about what happens after revocation (e.g., dependent credentials stop working) could be added, but the annotation and immediate-effect statement make the behavior clear.

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?

There is only one parameter and schema description coverage is 100%, so the baseline is 3. The description does not add explicit detail about the `id` parameter, but the resource is clear from the tool name and the phrase 'domain-scoped key'.

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 ('domain-scoped key'), which clearly distinguishes this from sibling deletion tools such as delete_app_password, delete_sequence, and delete_domain. The purpose is instantly clear and not tautological.

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 use case: revoke a domain-scoped key when it is no longer needed. It adds a prerequisite ('Requires a management session token'), but it does not explicitly contrast with related actions such as rotating a key or deleting an app password, so the selection guidance is only implied.

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

mailkite_delete_sequenceA
DestructiveIdempotent
Inspect

Delete a sequence and retire every contact still walking it. The response reports how many were canceled. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description doesn't need to restate those. It adds valuable context beyond annotations: the cascade effect on contacts ('retire every contact still walking it') and the response behavior ('reports how many were canceled'). It also discloses the API key requirement (mk_live_…). This is meaningful behavioral disclosure beyond the structured fields.

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, zero filler. The most important behavioral fact (cascade deletion) is front-loaded, followed by response info and auth requirement. Every sentence 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?

For a single-parameter destructive tool with annotations covering idempotency and destructiveness, the description is nearly complete. It covers the cascade effect, response content, and auth requirement. It doesn't describe error cases or whether deletion is reversible, but those are minor given the annotations and simple parameter set.

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

Parameters3/5

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

Schema description coverage is 100% and the only parameter is 'id' with description 'Path parameter id.' The description doesn't add parameter-level detail, but with a single self-explanatory parameter and full schema coverage, the baseline 3 is appropriate. The description's mention of 'a sequence' implicitly maps to the id 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?

The description states a specific verb ('Delete'), a specific resource ('a sequence'), and a distinctive behavioral consequence ('retire every contact still walking it'). It clearly distinguishes this from sibling tools like mailkite_stop_sequence or mailkite_cancel_enrollment by describing the cascade effect.

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 when to use it: when you want to delete a sequence and retire its active contacts. It does not explicitly name alternatives or exclusions, but the cascade behavior ('retire every contact still walking it') gives clear context that this is the full-deletion tool rather than a stop or pause. A small gap: it doesn't explicitly say 'use stop_sequence if you only want to pause'.

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

mailkite_delete_tracking_webhookA
DestructiveIdempotent
Inspect

Remove the domain's tracking-event webhook (engagement events stop). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark the tool as destructive and idempotent, and the description adds meaningful context beyond that: engagement events will stop after removal and a management session token is required. This gives the agent a concrete expectation of effects and prerequisites.

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

Conciseness5/5

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

Two short sentences, no redundant phrasing, and the core action and consequence are front-loaded. The auth requirement is appended without unnecessary elaboration.

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 single-parameter destructive tool with rich annotations, the description provides sufficient information: what is removed, the consequence, and the required credential. No output schema exists, but the description does not need to explain return values for a simple delete 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?

Schema description coverage is 100%, with the 'id' parameter already explained as a path parameter. The description does not add additional parameter-level meaning, such as whether the id refers to the webhook or the domain, but it is not necessary given the schema and the tool's clear subject.

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 and resource: 'Remove the domain's tracking-event webhook', with a clear behavioral consequence ('engagement events stop'). This clearly distinguishes it from sibling tools like mailkite_delete_webhook or mailkite_delete_webhook_events by specifying the tracking-event webhook.

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 makes the context clear: this tool removes the tracking-event webhook, and the statement about engagement events stopping implies the impact. It does not explicitly name alternatives or when-not-to-use conditions, but the targeted resource is clear enough among the webhook-related siblings.

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

mailkite_delete_triggerA
DestructiveIdempotent
Inspect

Detach a trigger. Stops future enrollments through that door and nothing else. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the description doesn't need to restate that. It adds useful context: 'stops future enrollments through that door and nothing else' – clarifying the scope of destruction (only future enrollments, not existing ones). It also mentions the API key requirement (mk_live_…) which is a behavioral prerequisite. However, it doesn't detail idempotency, though annotations already indicate idempotentHint=true. The description adds value but doesn't add much beyond annotations, so a 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?

The description is two sentences with zero waste. The first sentence states the action, the second provides the key differentiation and the auth requirement. It's front-loaded with the core purpose and ends with a necessary practical detail. Perfectly 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 simple single-parameter deletion tool with annotations covering destructive and idempotent hints, and no output schema, the description is mostly complete. It explains the effect on future enrollments, which is the main behavioral nuance, and the auth requirement. It doesn't mention what happens to existing enrollments or whether it's reversible, but annotations and the simple nature of the operation make it less critical. A slight gap is the absence of the return value, but with no output schema, it's acceptable. Overall, it provides enough for an agent to call it correctly.

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

Parameters4/5

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

Schema description coverage is 100% for the only parameter 'id', but the description is minimal ('Path parameter id'). The tool description does not add any additional meaning to the parameter, as it doesn't explain what the id represents (trigger ID). However, given that the tool name is 'delete_trigger', it's reasonable to assume id is the trigger ID. Since coverage is high, baseline is 3, but the description's mention of 'trigger' and 'door' gives contextual clue about the parameter's purpose. The description adds a bit more than just the schema, so a 4 is warranted.

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 a clear verb ('detach') and resource ('trigger'), and clarifies the effect ('stops future enrollments through that door and nothing else'). It distinguishes itself from delete_trigger by using 'detach' and emphasizing it's non-destructive to other parts, though it doesn't explicitly name sibling tools. The purpose is clear and specific.

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 when to use this tool: when you want to stop future enrollments without affecting existing enrollments or other settings. It provides a clear context ('through that door') and indicates it does nothing else. However, it doesn't explicitly contrast with related tools like mailkite_delete_trigger (if exists) or mailkite_cancel_enrollment, leaving some inference to the agent. Since the sibling list includes mailkite_stop_sequence and mailkite_delete_sequence, a more explicit differentiation would help, but the description gives enough guidance for most cases.

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

mailkite_delete_webhookB
DestructiveIdempotent
Inspect

Remove the domain's webhook. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare this destructive and idempotent, so the description does not need to repeat that. It does add the auth requirement of a management session token, which is useful context, so the agent knows the caller must be authenticated. However, it does not describe any side effects beyond deletion, like whether the webhook will stop receiving events.

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

Conciseness5/5

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

The description is only two sentences with no filler. The primary purpose is front-loaded in the first sentence, and the auth requirement is a concise but necessary addition in the second. 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?

The tool is simple and the annotations take care of the safety profile. The description is acceptable for one-parameter delete action, but it does not eliminate the ambiguity about which webhook type is being targeted or what the `id` represents. That leaves room for a slight but manageable misinterpretation.

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 covers the single `id` parameter at 100%, so the information is present, but the schema text only says 'Path parameter `id`.' The description does not clarify whether `id` is a domain ID or a webhook ID, leaving room for misinterpretation. Baseline is accepted because the schema owns it, but the description adds no value.

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 a specific verb and a resource: 'Remove the domain's webhook.' This is clear enough, but the text does not explicitly distinguish this from the sibling mailkite_delete_tracking_webhook, so an agent may not know whether this deletes the main webhook or a tracking-specific one.

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?

There is no guidance about when to choose this tool over alternatives such as delete_tracking_webhook, set_webhook, or verify_webhook. The mention of the management session token tells the agent a prerequisite, but not which the webhook type this applies to or when this tool should be preferred.

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

mailkite_delete_webhook_eventsB
DestructiveIdempotent
Inspect

Opt the domain's inbound webhook back out of engagement events (inbound email.received only — the default). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already signal destructive and idempotent behavior; the description adds the meaningful detail that only the inbound email.received engagement event is affected and that a management session token is required. No contradictions with the annotations.

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

Conciseness4/5

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

Two short sentences, mostly front-loaded and efficient. Minor awkwardness in 'opt the domain's inbound webhook back out of' but no wasted 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?

The description covers auth requirement, event scope, and default behavior, and annotations cover idempotency/destructiveness. Missing: what the id identifiesay, whether any other engagement events are affected, and what response/state results.

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% but the description only says the parameter is the path id. It does not explain what entity id refers to (domain, webhook, or event subscription), which an agent would need for a confident call.

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 operation ('opt ... back out of engagement events'), the target (the domain's inbound webhook), and the scope (inbound email.received only — the default). It is understandable, though 'opt the domain's inbound webhook back out of engagement events' is roundabout and never explicitly says 'delete the webhook event subscription'.

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?

There is no guidance about when to choose this over related webhook tools (set_webhook_events, delete_webhook, delete_tracking_webhook). The only implicit context is that it affects the default inbound email.received event; no conditions, preconditions, or alternatives are given.

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

mailkite_deliver_to_routeAInspect

POST stored messages to one webhook route — including messages that arrived BEFORE the route existed, which no retry can reach (a retry replays an existing delivery row, and a new route has none). Use listRouteCandidates to find what a route could be sent. Webhook routes only: a forward would re-send real mail to a third party and an agent would re-spend model tokens, so both answer 400 route_action. At most 50 ids per request; same per-id results contract as retryDeliveries. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
messageIdsYesStored messages (msg_…) to deliver to this route's webhook, in any order.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds critical behavioral context: this operation requires a management session token, enforces a 50-id limit, returns a per-id `results` contract like retryDeliveries, and rejects non-webhook route types. These are exactly the behavioral traits an agent needs beyond the schema.

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?

Though denser than a one-liner, every sentence earns its place: core action, key edge-case, discovery pointer, exclusion criteria, limits, contract reference, and auth requirement. The most important distinction is front-loaded, and no filler or repetition of schema details exists.

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 two-parameter operation with no output schema, the description provides everything needed to invoke correctly: id and messageIds meanings are in the schema, while behavior, limits, auth, error cases, and result contract are explained. The reference to retryDeliveries' per-id results contract fills the return-format gap effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description slightly reinforces the meaning of messageIds by saying 'stored messages (msg_…) to deliver to this route's webhook' and 'at most 50 ids per request,' but the schema already documents both parameters well. It does not substantially extend the schema-provided 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 opens with a specific verb and resource: 'POST stored messages to one webhook route.' It immediately distinguishes this from retry-based delivery by explaining that messages arriving before the route existed cannot be reached by a retry, and it contrasts with forward/agent alternatives. The purpose is unmistakable.

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

Usage Guidelines5/5

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

The description explicitly tells the agent when this tool is needed: for pre-route messages that retries cannot replay. It names the discovery alternative, 'Use listRouteCandidates,' and gives hard exclusion criteria: forward and agent actions return 400 `route_action`. This is strong routing guidance.

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

mailkite_exchange_oauth_tokenAInspect

Exchange an authorization code for an access token (or rotate a refresh token) — step 3 of linking. Between steps you send the user's browser to /oauth/authorize with your client_id, redirect_uri, state, and an S256 code_challenge; they sign in with whatever method they already use and approve, and the code comes back to your redirect_uri. Then call getApiKey with the access token and store the key. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoauthorization_code grant: the single-use code from the redirect. Expires quickly and is consumed on first use — a replay returns invalid_grant.
client_idNoauthorization_code grant: required. refresh_token grant: optional, but checked against the token's client when supplied.
grant_typeYesWhich exchange to perform.
redirect_uriNoauthorization_code grant: must match the redirect_uri used at /oauth/authorize exactly.
code_verifierNoauthorization_code grant: the PKCE verifier whose S256 hash you sent as code_challenge. Required — there is no non-PKCE path.
refresh_tokenNorefresh_token grant: the token to rotate. Single-use — the old one is revoked and a new one returned alongside the access token.

TDQS

A4.1/5.0
Behavior4/5

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

Given annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description adds valuable behavioral context beyond those hints. It discloses that the authorization code is single-use and expires quickly, with a replay returning invalid_grant. It also notes that the refresh token is single-use and is revoked upon rotation. These details help the agent understand the side effects and constraints of the operation. While it doesn't explicitly state that the operation mutates state (like revoking tokens), the description of token rotation and revocation implies it. 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.

Conciseness4/5

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

The description is concise and front-loaded: it starts with the core action and positions it as step 3. It then provides necessary context about the OAuth flow in a few sentences. There is no fluff, and each sentence contributes value. It could be slightly more structured by separating the two grant types, but it's still 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?

Given the complexity of an OAuth exchange with two grant types and six parameters, the description is fairly complete. It explains the overall flow, the need for a management session token, and points to the next step (getApiKey). However, it does not describe the response format (e.g., that it returns tokens), but since there is no output schema, the description could have mentioned what the tool returns. Still, the pointer to getApiKey implies the returned access token is used there. Minor gap, but solid overall.

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 thoroughly. The description adds a bit of context by describing the overall flow but does not provide additional parameter semantics beyond what's in the schema. For example, the schema already describes code_verifier as required and the grant_type enum. The description reinforces the sequence but adds minimal new information about parameters themselves. 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's purpose: exchanging an authorization code for an access token or rotating a refresh token, and positions it as step 3 of an OAuth linking flow. It mentions specific actions (exchange) and resources (authorization code, access token, refresh token), which distinguishes it from other OAuth-related tools like register_oauth_client and get_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 Guidelines4/5

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

The description provides a clear sequence: it explains the steps before (sending user to /oauth/authorize with specific parameters) and after (calling getApiKey with the access token and storing the key). It implicitly indicates when to use this tool (after obtaining the authorization code, before obtaining the API key) but does not explicitly mention alternatives or exclusions, which would justify a 5. However, it does mention the requirement of a management session token, which is useful context.

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

mailkite_get_api_keyA
Read-only
Inspect

Get the account's unrestricted API key (mk_live_…). Read-or-create: the first call mints it. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior1/5

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

Description says 'Read-or-create: the first call mints it,' implying a state-changing side effect, which directly contradicts the readOnlyHint=true annotation.

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?

Concise and grammatically sound, with the key detail upfront. The Windows-style ellipsis is slightly informal but does not harm clarity.

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

Completeness4/5

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

Self-contained given the zero-parameter schema: it names the resource, the format, the precondition, and the read-or-create behavior. Only the contradiction with the readOnly annotation prevents a perfect score.

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 tool has zero parametersched, so the schema cannot clarify anything. The description adds contextual meaning about the key and behavior, but there are no parameter semantics to clarify.

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

Purpose5/5

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

Clearly states the tool retrieves the account's unrestricted API key (mk_live_…), which distinguishes it from sibling tools like rotate_api_key or scoped-key creation.

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 a clear usage context: obtain the unrestricted key with a management session tokencing. It implies when to use it versus scoped or rotated keys, though it does not name alternatives explicitly.

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

mailkite_get_broadcastA
Read-only
Inspect

Get one broadcast with its status and recipient summary. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, and the description complements this with the additional requirement of a management session token and a preview of the response contents. It does not cover errors or response format details, but for a simple read operation this is a reasonable level of disclosure.

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 with no wasted words. It front-loads the action and result, then adds the auth requirement, making it highly scannable for an agent.

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

Completeness4/5

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

For a one-parameter read-only tool, the description covers the key aspects: what is fetched, what the response highlights, and the required token. Since there is no output schema, a bit more detail about the returned recipient summary fields could help, but nothing critical is missing for invoking 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?

The only parameter, id, already has 100% schema coverage, so the description is not obligated to document it heavily. It adds the context that the id refers to a broadcast, but provides no extra format, source, or validation detail beyond what the tool name and schema already imply.

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

Purpose5/5

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

The description clearly states the action ('Get'), the resource ('one broadcast'), and the distinguishing output ('status and recipient summary'). It is unambiguous and easily differentiated from broadcast-list, create, update, delete, and send siblings.

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 singular 'one broadcast' implies this tool is for individual retrieval rather than listing all broadcasts, and the token requirement sets an operational prerequisite. It does not explicitly name alternatives like list_broadcasts or state when not to use it, but the context is clear enough.

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

mailkite_get_domainA
Read-only
Inspect

Get one domain with DNS records + webhook. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already include readOnlyHint=true, so the read-only nature is covered. The description adds the requirement of a management session token and states that the tool returns DNS records and webhook, which are useful behavioral details not present in the annotation. However, it does not discuss error cases, rate limits, or other side-effect-free behaviors beyond what is implied by the annotation.

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 core purpose ('Get one domain with DNS records + webhook') and then adds the essential token requirement. Every word is informative, with no redundancy or filler. It is appropriately concise for a simple get 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 single-id get operation with no output schema, the description covers the essential information: what it does and what it returns. It also mentions the token requirement which is a key context for invocation. It does not mention error handling or edge cases, but these are not critical for a basic read operation when annotations already indicate safety. Overall, it is sufficiently complete for an agent to call it correctly.

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

Parameters3/5

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

The schema provides 100% coverage for the single parameter 'id' with description 'Path parameter `id`.' This is minimal and essentially just names it as a path parameter. The tool description does not add any further meaning or context about the id (e.g., format, where to find it, or its role). Since schema coverage is high, the baseline is 3, and the description adds no extra semantic 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 clearly specifies the action 'Get' and the resource 'one domain', and explicitly states what is returned: 'DNS records + webhook'. This differentiates it from sibling tools like mailkite_list_domains (plural) and other domain operations, 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 does not provide any guidance on when to use this tool versus alternatives such as mailkite_list_domains or mailkite_get_sequence. It only notes a prerequisite (management session token), but no explicit when-to-use/when-not-to-use conditions or mention of sibling tools that might be preferred in certain situations.

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

mailkite_get_enrollmentA
Read-only
Inspect

Get one enrollment — which sequence, which step, and what happens next. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.2/5.0
Behavior4/5

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

The annotation readOnlyHint=true already signals a read-only operation, so the description appropriately adds the API key requirement and the specific fields returned. This is useful additional context beyond annotations, but it doesn't disclose potential errors 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 succinct sentences, with the main verb and resource first, and the auth requirement appended. No wasted words.

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

Completeness4/5

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

The tool is simple with one parameter and no output schema, and the description conveys what it returns and the auth requirement. It is complete enough for an agent to call correctly, though it doesn't cover error cases like not found.

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, so the schema already explains id as a path parameter. The description does not add extra meaning about id format or constraints, so it meets the baseline of 3.

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

Purpose5/5

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

The description clearly states the action and resource: retrieving a single enrollment, and specifies what information is returned (sequence, step, and next actions). This distinguishes it from list_enrollments which returns multiple, and from cancel_enrollment which modifies.

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?

It implies use when you need details of one specific enrollment identified by id, but does not explicitly name alternatives or exclusion conditions. The context is clear enough given the sibling names, but it could have stated 'use list_enrollments to get all enrollments'.

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

mailkite_get_listA
Read-only
Inspect

Get one contact list with its member count. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already include readOnlyHint=true, and the description adds the meaningful behavioral context that a management session token is required. It also states the return includes the member count. No contradiction exists; the added auth and return context go beyond the annotation.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler. It front-loads the core action and scopes the result, then gives the prerequisite. Every word adds value.

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 tool with one simple parameter, a read-only annotation, and no output schema, the description covers the core elements: what it retrieves, the distinguishing output (member count), and the required token. Nothing essential is missing for an agent to correctly invoke this simple GET-style 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?

The schema already describes the only parameter `id` as a path parameter, with 100% schema description coverage. The description does not add any semantic detail about the id itself, only that it refers to a contact list. The baseline of 3 is appropriate because the schema handles the 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 states a specific verb ('Get'), a specific resource ('one contact list'), and a distinctive output ('member count'). It is clearly differentiated from sibling tools like mailkite_list_lists by the singular 'one' and by not being a list-all operation.

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 clearly conveys that this tool is for retrieving a single contact list, which implies it should be chosen when a specific list is needed rather than when listing or mutating lists. It also names a prerequisite (management session token). However, it does not explicitly name alternatives or give 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.

mailkite_get_mailbox_message_rawA
Read-only
Inspect

Fetch one message's raw RFC822 bytes from a mailbox. Same app password auth as the list. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesPath parameter `uid`.
addressYesQuery parameter `address`.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=truecars, and the description adds the output format ('raw RFC822 bytes') plus an auth prerequisite ('management session token'), which is beyond the annotation. No contradiction with readOnlyHint.

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?

Three short sentences, front-loaded with the core purpose. Minor deduction for the vague reference 'as the list,' which requires the agent to infer which sibling tool is meant.

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 read-only single-message fetch, the description covers the output format (raw RFC822 bytes) and the critical auth prerequisite (management session token). It does not explain the address parameter's role beyond the schema, but the operation is simple enough that nothing critical is missing.

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% but the schema descriptions are tautological ('Path parameter uid'). The description adds mild context by clarifying the message and mailbox, but does not explain uid semantics or address format beyond that. 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 begins with a specific verb and resource: 'Fetch one message's raw RFC822 bytes from a mailbox.' This clearly identifies the tool's exact function and distinguishes it from siblings like mailkite_get_message by emphasizing raw bytes.

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 notes 'Same app password auth as the list' and 'Requires a management session token,' giving some operational context. However, it does not explicitly state when to prefer this tool over alternatives (e.g., get_message for parsed output), leaving the selection logic implicit.

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

mailkite_get_messageA
Read-only
Inspect

Get a message with deliveries + attachments. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, and the description adds a meaningful operational detail by requiring a management session token. It does not contradict annotations, but it also does not go substantially beyond them by discussing auth specifics, rate limits, or any edge-case behavior. This feels like a fair score given the annotation coverage.

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 core action and the resource content, and then follows with the necessary authentication requirement. There is no filler 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?

For a simple single-parameter 'get message' tool, the description covers the returned contents (deliveries + attachments) and the authentication prerequisite. It does not overelaborate or leave major gaps, though it could theoretically specify response shape or error behavior, but these are not necessary for this minimal tool 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%, so the parameter 'id' is already fully documented by the schema. The description does not add any interpretation of the parameter beyond what the schema says, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states the verb 'Get' and the resource 'a message' with explicit subtopics 'deliveries + attachments', which is clear and specific. It does not explicitly name a sibling tool for differentiation, but the mention of deliveries and attachments helps distinguish it from similar listing or raw-message 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 tells the agent that a 'management session token' is required and implies use when a message ID is known and full delivery/attachment info is wanted. However, it does not explicitly state when to prefer this tool over alternatives like list_messages or get_mailbox_message_raw, nor does it provide any exclusion guidance.

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

mailkite_get_sequenceA
Read-only
Inspect

Get one sequence with its definition and live enrollment counts. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already signal readOnlyHint=true, so the description's main contribution is noting the API key requirement and that the enrollment counts are 'live'. These details go beyond the structured annotations and help set expectations for auth and data freshness.

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 brief and functional, using two short sentences with no wasted words. The primary action is front-loaded and the API key requirement adds useful context, though a slightly tighter structure would be possible.

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 one-parameter read operation with robust annotations and full schema coverage, the description provides enough context: what is returned, which resource, and a auth requirement. The lack of an output schema is offset by the explicit mention of the returned data ('definition and live enrollment counts').

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

Parameters3/5

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

Schema description coverage is 100% and the only parameter 'id' is already documented as a path parameter. The description does not add explicit meaning about what the id refers to, though 'Get one sequence' strongly implies it represents a sequence identifier. This is adequate for a single well-documented parameter.

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?

States a clear verb and resource, 'Get one sequence', and specifies what's returned: the definition and live enrollment counts. This distinguishes it from list_sequences, but it does not explicitly name sibling alternatives.

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 it is for fetching one specific sequence, but it does not explicitly state when to use this tool over list_sequences or get_enrollment, nor does it mention when not to use it. The guidance is inferred from 'one sequence' rather than stated.

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

mailkite_get_templateA
Read-only
Inspect

Get one template (full: subject, html, text, theme). Works for your templates (tpl_…) and base templates (base_…). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.3/5.0
Behavior4/5

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

The annotation already exposes readOnlyHint=true, and the description adds meaningful behavior beyond that: it returns the complete template payload (subject, html, text, theme), covers both ownership scopes (tpl_ and base_), and mentions the authentication token requirement. This is valuable context that the agent needs before calling the tool and that is not present in the schema or 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 that front-load the core purpose and output fields, then state the scope and the authentication requirement. There is no filler, tautology, or redundant repetition of the schema or annotations. 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?

For a single-parameter read-only tool with no output schema, the description delivers everything an agent needs to call it correctly: the return fields are explicitly listed, the identifier conventions for both user and base templates are given, and the authentication prerequisite is stated. Nothing essential is missing.

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

Parameters4/5

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

The schema provides full coverage for the single `id` param but merely labels it 'Path parameter `id`'. The description adds real meaning by explaining that `id` can be either a user template id (tpl_…) or a base template id (base_…), which is actionable for constructing a valid request. This exceeds the baseline of 3 for fully covered schemas.

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-resource pair ('Get one template') and explicitly enumerates the returned fields (subject, html, text, theme), which distinguishes it clearly from list-like siblings such as mailkite_list_templates or mailkite_list_base_templates. It also clarifies that it accepts both user templates (tpl_…) and base templates (base_…), leaving no ambiguity about which resource is handled.

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 it—when you need the full content of a single template—and it states a prerequisite ('Requires a management session token'). However, it does not explicitly contrast with alternative tools (e.g., 'use list_templates when you only need summaries') or state exclusions. The usage context is clear but no direct routing guidance is given.

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

mailkite_get_usageA
Read-only
Inspect

Current billing-period usage: emails used vs the plan's included bucket (null = unlimited), AI actions, and the overage state that gates sending. Powers quota meters in dashboards and integrations. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The readOnlyHint annotation already signals no side effects, and the description adds value by disclosing the authentication requirement ('management session token') and the behavioral consequence of overage state gating sending. This goes beyond the structured annotation.

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 short sentences deliver all essential information: what is measured, how it is used, and what access is required. No fluff, front-loaded with the core purpose.

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

Completeness4/5

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

For a parameterless, read-only query, the description is complete: it defines the output fields, the use case, and the authentication requirement. It could optionally specify response formatting, but that is not essential for correct invocation.

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

Parameters4/5

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

The tool takes zero parameters narrativeschema covers everything; there is nothing for the description to clarify. The description appropriately focuses on the return semantics instead.

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

Purpose5/5

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

The description clearly states the tool returns billing-period usage metrics: emails used versus the included bucket, AI actions, and the overage state that gates sending. It names the specific resource and differentiates this read-only monitoring tool from the many send/management siblings.

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?

It provides a clear use case—powering quota meters in dashboards and integrations—and an implicit context of checking sending capacity via the overage state. It doesn't explicitly exclude alternatives, but no direct sibling competes with this function.

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

mailkite_list_app_passwordsA
Read-only
Inspect

List the account's app passwords. Each one opens a mailbox over IMAP and/or the mailbox API, scoped to a domain and an address pattern within it. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The readOnlyHint annotation already covers safety, and the description adds value beyond it by explaining what an app password is (accesses mail over IMAP and the mailbox API) and its scope (domain and address pattern). No behavioral surprises disclosed or needed for such a simple read-only listing.

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 compact sentences, front-loaded with the action, and all additional context earns its place: what an app password is, its scope, and the auth requirement.

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 zero-parameter read-only list tool, the description is complete: it identifies what is listed, what the items mean, their scope, and the token requirement. Minor gap is no mention of output shape or pagination, but the absence of params and presence of readOnlyHint make this a small concern.

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 takes zero parameters, so there is nothing to document; the baseline of 4 applies. The description adds resource context (which app passwords are listed) 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 states a specific verb ('List'), a clear resource ('the account's app passwords'), and explains what these passwords are for ('opens a mailbox over IMAP and/or the mailbox API, scoped to a domain and an address pattern'). This goes beyond the bare name and distinguishes it from other list_* siblings.

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 that this operates on the account's app passwords and explains what app passwords doable. The auth prerequisite ('Requires a management session token') is a useful usage condition. It does not name alternatives explicitly, but as a standalone list operation 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.

mailkite_list_base_templatesA
Read-only
Inspect

List the premade base templates (light metadata). Clone one with createTemplate({ baseId }) or send from it directly via send({ templateId }). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations include readOnlyHint=true, so the description doesn't need to restate that. It adds that it returns light metadata (implying not full template) and requires a management session token, which is useful. However, it doesn't specify pagination or output structure beyond light metadata.

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

Conciseness5/5

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

The description is concise, two sentences, with no fluff. It front-loads the purpose, then provides actionable next stepsable (clone or send) and the prerequisite (management session token). 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 it's a simple list operation with no params, the description is quite complete. It mentions the output (light metadata) and the use cases, and the annotation covers read-only. The only gap is the structure of the output (e.g., fields), but that is minor for a list of base templates.

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 no parametersujetes (0 params), so the schema is empty. The description adds value by explaining the return type (light metadata) and how the results can be used, which compensates for the lack of parameter details. Since there are no params, a baseline of 4 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 clearly states it lists base templates with light metadata, and distinguishes it from sibling tools like mailkite_list_templates (which likely lists all templates). It also mentions cloning or sending directly, giving a 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 implies when to use it: when you need to browse premade templates. It mentions actions (clone or send) but doesn't explicitly state when not to use it or alternatives (e.g., mailkite_list_templates). The context signal of having siblings is high, but no explicit exclusion is given.

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

mailkite_list_broadcastsA
Read-only
Inspect

List your broadcasts (one-to-many sends) with status and send stats. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already convey readOnlyHint=true, so the read-only nature is covered. The description adds useful behavioral context by specifying that results include status and send stats, and by explicitly calling out the auth requirement. It does not mention pagination, but that is a minor gap for a simple list tool.

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 with no filler. The core action is front-loaded, the parenthetical adds useful disambiguation, and the auth requirement is stated separately and concisely.

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, empty parameter schema, and readOnlyHint annotation, the description is complete enough for an agent to invoke the tool correctly. It identifies what is returned, the resource domain, and the required token, with no missing critical information.

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

Parameters4/5

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

There are no parameters in the input schema, so there is nothing for the description to explain beyond the schema. The baseline score of 4 applies because the empty schema already fully documents the absence of parameters.

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 states a precise verb and resource: 'List your broadcasts (one-to-many sends)'. Adding 'with status and send stats' clarifies what the listing returns, making it easy to distinguish from singular tools like mailkite_get_broadcast and from generic message listing.

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 clear context for when the tool is used: when you need a list of broadcasts with status and send stats. It also notes the required auth context ('management session token'). It does not explicitly name alternatives, but for a zero-parameter list operation the usage is evident.

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

mailkite_list_delivery_attemptsA
Read-only
Inspect

Every captured attempt for one delivery, newest first: the request headers and payload we POSTed, and the status, headers, and body that came back. This is the per-attempt record behind a webhook post-mortem, fetched without pulling the whole message. Captures are retained for 45 days. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses behavior not visible in annotations or schema: newest-first ordering, what is captured (request payload and response status/headers/body), the 45-day retention limit, and the management session token requirement. This is rich operational 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 compact and well-ordered: what is returned, ordering, purpose/alternative, retention, auth. Every sentence carries useful signal 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?

For a single-parameter read-only endpoint, the description covers the input concept, output contents, ordering, retention, and authentication; an agent has enough to decide and 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 schema already documents the sole parameter as a required string 'id' with 100% coverage衣柜? Need not. The description adds that the id selects one delivery, but provides no additional parameter constraints or format. 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 uses a specific verb and resource ('Every captured attempt for one delivery'), states the ordering ('newest first'), and enumerates exactly what is returned (request headers/payload, response status/headers/body). It also distinguishes this from fetching the whole message, making its scope clear against sibling tools.

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

Usage Guidelines5/5

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

It explicitly positions the tool as the per-attempt record behind a webhook post-mortem and notes it avoids pulling the entire message. That gives an agent clear situational guidance for when to call this tool versus a message-fetching or retry sibling.

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

mailkite_list_domainsA
Read-only
Inspect

List your domains, each with its webhook URL. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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, so the read-only behavior is covered. The description adds the meaningful prerequisite of a management session token, which is not in the annotations, and clarifies the return includes webhook URL. It does this without contradicting the annotation, so this extra context raises it beyond baseline.

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

Conciseness5/5

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

Two short sentences with no filler: the first states the primary purpose and the return content, and the second adds the prerequisite. Every phrase earns its place, and the core action is front-loaded.

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

Completeness4/5

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

For a zero-parameter, read-only list with no predefined output schema, the description covers purpose, the key return field (webhook URL), and the token requirement. It does not mention pagination, ordering, or error behaviors, but the simplicity of the operation makes those gaps minor.

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

Parameters4/5

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

There are zero parameters and the schema is trivially 100% covered, so the description has no parameters to explain. Applying the baseline for a 0-param tool, it earns a 4; there is nothing else the description needed to add.

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 states a specific verb and resource: 'List your domains, each with its webhook URL.' It is clearly distinct from sibling tools like get_domain (single domain) or create_domain, and the scope ('your domains') removes ambiguity. The title 'List Domains' is reinforced rather than merely restated.

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 phrase 'List your domains' implies the primary use case, but it provides no explicit comparison to alternatives (e.g., 'for a single domain use get_domain') and no 'when not to use' guidance. The management-session-token requirement adds a precondition but does not help route the agent toward or away from siblings.

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

mailkite_list_enrollment_runsA
Read-only
Inspect

Every step this enrollment has executed, with the outcome and the reason for it. This is the "why didn't step 3 fire" view. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `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, so the description correctly adds that it's read-only. It goes beyond that by describing the output content (steps, outcomes, reasons) and noting the API key requirement (mk_live_…). No contradiction with annotations; the description enriches the behavioral context without repeating the hint.

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

Conciseness5/5

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

The description is concise: three short sentences with no fluff. It front-loads the core purpose, then the use case, then the auth requirement. Every sentence earns its place and the structure is easy to scan.

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 covers the essential aspects: purpose, use case, and auth requirement. It describes the content (steps, outcomes, reasons) but doesn't mention pagination, error handling, or response structure—minor gaps given the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100% (the only parameter id has a minimal description 'Path parameter id.'). The description adds a weak implication that id refers to an enrollment via 'this enrollment,' but it does not clarify the parameter's format, source, or usage. Since coverage is high, the baseline is 3, and the description adds only marginal 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 what the tool does: it lists the steps executed for a given enrollment, including outcomes and reasons. The phrase 'why didn't step 3 fire' provides a concrete use case and differentiates it from sibling tools like list_enrollments (which lists enrollments themselves) and get_enrollment (which retrieves a single enrollment).

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 clear context for when to use the tool—debugging why a step didn't fire—which is useful for an agent deciding between this and related enrollment tools. However, it does not explicitly mention alternatives or state when not to use it, though the use-case phrasing strongly implies it's for execution debugging.

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

mailkite_list_enrollmentsA
Read-only
Inspect

List who is in a sequence and where each of them is. Filter with status. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description is consistent ('List who...'). It adds the prerequisite of a live API key and the ability to filter by status, which are not conveyed by annotations or schema. The mention of a status filter is a behavioral trait, though it is not reflected in the schema, creating a minor inconsistency.

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

Conciseness5/5

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

Two short sentences that immediately state the core purpose and the key actionable detail (status filter). No filler or redundancy; the structure is front-loaded with the primary 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?

For a single-parameter tool it is fairly complete, but the status filter mention without a corresponding schema property is a notable gap. It also does not describe what the output will be (though no output schema exists). The API key requirement is useful context. The mismatch between description and schema lowers 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?

The schema description for the single parameter is uninformative ('Path parameter id'), but the description partially clarifies that id refers to the sequence. However, the description also references a status filter that is not a parameter in the schema, which could mislead an agent into passing an unsupported argument. It adds some meaning but with inconsistency.

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 states a specific action ('List who is in a sequence') with a clear resource (enrollments in a sequence) and the kind of data returned ('where each of them is'). This precisely distinguishes it from siblings like get_enrollment, cancel_enrollment, and list_enrollment_runs.

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?

It clearly implies the use case: enumerate enrollments in a sequence, optionally filtered by status. It does not explicitly contrast with alternatives, but the phrasing 'in a sequence' and the filter mention provide sufficient contextual guidance for an agent to select it over get_enrollment or list_enrollment_runs.

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

mailkite_list_event_namesA
Read-only
Inspect

List the distinct event names this account works with, so an editor can offer them instead of asking you to remember one. Returns both events actually posted (with a count and when one last arrived) and events your sequences already trigger on or wait for but that may never have been sent — sequences are routinely written before the application emits the event, so a list of only-what-you-have-sent would be a trap. Requires an API key (mk_live_…).

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?

Beyond the readOnlyHint annotation, it discloses that results include both posted events (with counts and last-arrival time) and events referenced by sequences but never sent, and it explains why that matters. It also calls out the API key requirement. 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 longer than average, but every clause earns its place: purpose, result composition, counts/timestamps, the trap rationale, and auth requirement. The structure flows logically from what it returns to why it returns it.

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 zero-parameter, read-only list tool with no output schema, it fully covers what is returned, the two categories of event names, the rationale for including unsent ones, and the authentication prerequisite. Nothing essential is missing.

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 there is no parameter meaning to add; the baseline of 4 for no parameters is appropriate. The description's information about output categories is not parameter semantics but is still useful 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 names the exact resource ('distinct event names this account works with') and the intended consumer ('so an editor can offer them'). It also distinguishes itself from a more naive events-only listing by explicitly covering sequence-referenced events, making it distinct from siblings like mailkite_list_events and mailkite_list_triggers.

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?

It provides a concrete usage scenario (editor needs to offer valid event names) and includes a warning that a sent-only list would be a trap, implying when this broader listing is the right choice. It does not explicitly name sibling alternatives, but the context and warning make the appropriate use clear.

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

mailkite_list_eventsA
Read-only
Inspect

List recorded events, newest first — the surface for confirming a POST landed and for debugging a sequence that did not trigger. Filter by name and/or email. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations include readOnlyHint: true, which covers the safety aspect. The description adds value by specifying the API key requirement ('mk_live_...') which is not in annotations, and stating the ordering behavior. It is consistent with annotations, so 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 two sentences with no fluff. It front-loads the core purpose and ordering, then quickly adds use cases, filters, and auth requirement. All information is relevant and efficiently stated.

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 params, read-only, no output schema), the description covers the essential aspects: purpose, ordering, filters, and auth. It doesn't describe the response shape, but given the lack of an output schema, the agent might still be partially in the dark about return fields. However, for a list tool with such a simple interface, this is 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?

The input schema has zero parameters, so the description's mention of filtering by 'name' and/or 'email' is the only source of parameter insight. Since the schema is empty)Skip scoring down as baseline 4 for zero params, and the description fully compensates by listing the expected optional filters.

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 a clear verb and resource ('List recorded events') and adds a concrete ordering constraint ('newest first'), which distinguishes it from a generic list. It also hints at its specific role (confirming POSTs and debugging sequences), but it doesn't explicitly name a sibling, so it falls short of a 5.

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?

It provides clear use cases ('surface for confirming a POST landed and for debugging a sequence that did not trigger') which guide when to call it. However, it doesn't explicitly contrast with the many sibling list tools (e.g., mailkite_list_routes, mailkite_list_event_names), so the guidance is contextual but not exclusive.

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

mailkite_list_list_contactsA
Read-only
Inspect

List the contacts that are members of a list, newest first. Optionally page with before (a last_seen_at/created_at cursor) and limit. Response is a bare array — paginate by passing the last row's last_seen_at (or created_at) as the next before. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, it reveals ordering, the bare-array response shape, the exact pagination cursor mechanism, and the auth prerequisite. This is rich behavioral context an agent can act on.

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

Conciseness5/5

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

Three sentences, front-loaded with the primary purpose, followed by pagination mechanics and auth. No filler or repetition of the schema.

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 listing tool with one schema parameter, the description covers what is returned, the ordering, how to page, and what auth is required. The only completeness gap is that before/limit are described but not represented in the input schema, leaving a small invocation ambiguity.

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% (only id), but the description adds meaningful semantics by contextualizing id as the list whose members are fetched and by documenting the before/limit pagination parameters. The only caveat is that before/limit are absent from the input schema, so the agent must infer they are query-level parameters.

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?

Opens with a specific verb-resource pair: 'List the contacts that are members of a list' plus ordering ('newest first'). This clearly distinguishes it from sibling tools like mailkite_list_lists (lists themselves), mailkite_add_list_contacts, and mailkite_remove_list_contact.

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 clear context: it is the read-side list-membership operation and notes the management session token prerequisite. It doesn't explicitly name alternative tools or say when not to use it, so it stops short of a 5.

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

mailkite_list_listsA
Read-only
Inspect

List your contact lists (static, curated broadcast audiences), each with its member count. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description only needs to add context beyond that. It adds the auth-token requirement and the member-count output, but does not describe pagination, return shape, or potential empty-list behavior. This is adequate but not rich.

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

Conciseness5/5

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

Two short sentences with no wasted words: purpose, scoping, output content, and the auth requirement are all covered efficiently.

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 zero-parameter, read-only listing tool, the description is sufficient: it states the resource, the output detail (member count), and the session-token requirement. No output schema exists, and the description compensates by noting what the response includes.

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

Parameters4/5

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

There are zero parameters and schema coverage is 100%, so the baseline is 4. The description adds useful scope in 'your contact lists' and clarifies result contents, but there is little parameter-specific meaning to add.

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?

States a specific verb and resource ('List your contact lists') and adds clarifying scoping ('static, curated broadcast audiences') plus the member-count detail. This clearly differentiates it from sibling list_* tools such as list_broadcasts, list_routes, and list_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 Guidelines4/5

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

Gives clear context for when to use it: to enumerate static, curated broadcast audiences, and it adds the auth prerequisite ('Requires a management session token'). It does not explicitly name alternative tools or exclusion conditions, so it falls short of a 5.

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

mailkite_list_mailbox_messagesA
Read-only
Inspect

List a mailbox's messages, newest first. Authenticated with an app password granting api — this is how an agent reads its own inbox without an IMAP client. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesQuery parameter `address`.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful behavioral context: authentication via app password with `api` scope, management session token requirement, and newest-first ordering. It does not disclose pagination, limits, or return format, but with readOnlyHint present, a 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?

Three sentences with no filler. The core action and ordering are front-loaded, followed by authentication context and a requirement. Every sentence 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?

For a simple read-only list tool with one fully documented parameter and readOnlyHint annotation, the description is nearly complete. It covers purpose, ordering, authentication, and session requirement. The only minor gap is lack of pagination/limit details, but that is not critical for a basic list call.

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 the `address` parameter. The description adds that this is a mailbox address and ties it to the agent's own inbox, but it doesn't add format or source details beyond the schema. Baseline 3 is correct.

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 a specific verb ('List'), a resource ('a mailbox's messages'), and a clear ordering ('newest first'). It distinguishes itself from the sibling mailkite_list_messages by specifying mailbox context and the app-password/API authentication path, though it doesn't explicitly name the sibling alternative.

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 clear context: it is how an agent reads its own inbox without an IMAP client, and it requires a management session token. It does not explicitly say when not to use it or name alternatives like mailkite_list_messages, but the context is strong enough for an agent to select it appropriately.

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

mailkite_list_messagesA
Read-only
Inspect

List stored messages, newest first. Optionally filter with search (matches sender, recipient, or subject) and page with before (a received_at cursor) and limit; omit all for the default newest 100. Response is a bare array — paginate by passing the last row's received_at as the next before. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint annotation by disclosing the bare-array response shape, newest-first ordering, the pagination contract (pass the last received_at as the next before), and the auth requirement. There is no contradiction with the annotations.

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

Conciseness5/5

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

Every sentence earns its place, with the main purpose front-loaded and filtering, pagination, default behavior, and auth kept compact. Backticks unambiguously highlight parameter names.

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 list tool with no output schema, the description covers default behavior, filtering, cursor pagination, response type, and authentication in one place. Nothing essential for a first correct call is missing.

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 richly documents search, before, and limit with precise meanings: field matching, received_at cursor, pagination size, and default behavior. However, the input schema declares zero properties and disallows additional properties, so the documented parameters are not represented in the machine-readable schema—an inconsistency that prevents a 5.

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 and resource: 'List stored messages, newest first.' This is specific and more informative than a bare tool name. However, it does not explicitly contrast itself with close siblings like mailkite_list_mailbox_messages or mailkite_get_message, so it stops short of a 5.

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 concrete usage context: optional search semantics, pagination via before/limit, the default of newest 100, and the required management session token. It does not mention alternatives or say when to prefer this tool over sibling list/get tools, preventing a higher score.

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

mailkite_list_route_candidatesA
Read-only
Inspect

Stored inbound messages this route could be asked to deliver, newest first — the preview for replaying mail to a route defined after that mail arrived. Each row carries delivered_here, so you can send a route only what it has never seen. Page with before (the response's nextBefore); because matching happens after a bounded scan, a page can come back shorter than limit while more still remain — keep going until nextBefore is null. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, it discloses ordering ('newest first'), row semantics (delivered_here), a detailed pagination contract (bounded scan, short pages, continue until nextBefore is null), and the required management session token. This is substantial behavioral context that annotations do not 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?

Four sentences, each carrying a distinct piece of information: what the tool returns, how to use delivered_here, how pagination behaves, and what auth is required. The purpose is front-loaded and there is no 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?

The description covers purpose, ordering, auth, and a pagination loop, but it references `before` and `limit` parameters that are absent from the input schema, so an agent cannot act on the pagination instructions through the declared interface. With no output schema, the row shape is also only partially specified.

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 100% schema coverage the baseline is 3, and the description at least suggests that `id` refers to 'this route'. However, it instructs the agent to page with `before` even though the input schema only accepts `id` and sets additionalProperties to false, so the parameter guidance is partly unimplementable and `id` is never explicitly defined.

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 identifies the resource ('stored inbound messages this route could be asked to deliver') and the purpose ('preview for replaying mail to a route defined after that mail arrived'). It does not state an explicit imperative verb like 'list' or name a sibling tool for contrast, so it is one notch below the clearest possible definition.

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?

It gives actionable context: use this preview before replaying mail, and use the delivered_here flag to send only messages the route has not seen. It does not explicitly enumerate alternatives or state when not to use it, but the context is clear enough to route an agent.

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

mailkite_list_routesA
Read-only
Inspect

List inbound routing rules. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, so the safe read-only nature is known. The description adds the requirement of a management session token, which is extra operational context not implicit in the schema. No annotations are declared that contradict the description and no conflicting behavioral traits (e.g., pagination, result size) are hidden.

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, with no filler. It front-loads the core operation and then supplies the single important prerequisite. Every word earns its place, making it ideal for an agent to parse quickly.

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 zero-parameter, read-only tool with no output schema, the description provides enough: what it does and when it can be invoked. It lacks only detail about the returned data structure, but such detail is often unnecessary for a list command and the readOnlyHint already aligns with a safe read operation. The definition is complete enough for correct invocation.

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

Parameters4/5

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

The input schema has zero parameters, so the baseline is 4. The description adds nothing parameter-specific (there are none), which is appropriate. Since there are no parameters to document, this dimension is fully satisfied by the absence of need.

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 states a specific verb and resource: 'List inbound routing rules.' It clearly distinguishes this from siblings like mailkite_create_route and mailkite_delete_route by focusing on the read-only listing of configured rules, and it is semantically different from mailkite_list_route_candidates. An agent can immediately know what the tool does without opening the schema.

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

Usage Guidelines3/5

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

The description includes the prerequisite 'Requires a management session token,' which is useful usage context. However, it does not specify when to prefer this over alternatives such as mailkite_list_route_candidates, nor does it describe exclusions or conditions around calling it. It implies usage but leaves the decision to the agent.

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

mailkite_list_scoped_keysA
Read-only
Inspect

List the account's domain-scoped API keys. A scoped key can send and manage only its one domain — hand one to each site or CI job so a leak burns only that surface. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The readOnlyHint annotation already signals a safe read operation. The description adds useful behavioral context beyond that: scoped keys are isolated to one domain, and a management session token is required. It does not describe the response shape, but the annotation covers the safety profile.

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

Conciseness5/5

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

The description is compact and front-loaded, opening with the core action and resource. The second sentence earns its place by explaining the security model and practical use case, and the third provides the required auth context. No filler 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?

For a parameterless read-only list tool, the description covers purpose, usage context, and authentication requirements. It does not detail what fields the listing returns, but with no params, a simple list operation, and no output schema, this is a minor rather than blocking gap.

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 schema is already complete and the description has nothing to add. The description's mention of account scope and session token is auth context rather than parameter semantics, and the baseline for zero-parameter tools 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 action ('List'), the resource ('account's domain-scoped API keys'), and the scope ('account's'). It also explains what a scoped key is, which distinguishes this tool from sibling credential-listing tools like list_app_passwords and get_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 Guidelines4/5

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

The description gives clear usage context: list scoped keys when you need per-domain credentials to hand to sites or CI jobs, and it notes the management session token requirement. It does not explicitly state when not to use it or name alternative tools, but the context is sufficient for an agent to choose it appropriately.

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

mailkite_list_sequencesA
Read-only
Inspect

List your sequences, newest first, each with live enrollment counts. Archived sequences are omitted. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

The readOnlyHint annotation already signals safe read-only behavior, and the description adds meaningful context: newest-first ordering, live enrollment counts in the output, archived-sequence filtering, and the required mk_live_ API key. It does not mention pagination or limits, but the added context goes well beyond the annotation.

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 compact sentences carry all essential information with no filler. The primary purpose and output characteristics are front-loaded, and the authentication note is placed last.

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 read-only list tool, the description adequately conveys what the response contains (sequences with live enrollment counts), the ordering, and the archive filter. Pagination behavior is not mentioned, but this is a minor gap for such a simple invocation.

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

Parameters4/5

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

The input schema has zero parameters, so parameter semantics are vacuous and the baseline of 4 applies. The mention of the API key refers to authentication rather than an input parameter, so no additional parameter detail is 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 ('List'), a clear resource ('sequences'), and a scoping qualifier ('your'). It adds distinctive behavioral details—newest-first ordering, live enrollment counts, and omission of archived sequences—that separate it from sibling tools like list_routes or list_triggers.

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 read-only listing use case is clear, but the description does not explicitly state when to prefer this over related tools such as get_sequence or list_enrollments. Mentioning the API key requirement is a useful prerequisite, but no alternative selection guidance or exclusions are provided beyond archived sequences.

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

mailkite_list_suppressionsA
Read-only
Inspect

List suppressed addresses (unsubscribes, hard bounces, spam complaints, manual). Sends to a suppressed address are dropped before delivery. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description complements the readOnlyHint annotation and adds useful behavioral context beyond it, such as the management session token requirement and the fact that suppressed addresses cause sends to be dropped. It does not contradict the read-only annotation; the token requirement does not imply mutation.

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 with no filler, front-loading the core action 'List suppressed addresses' before supporting details. Every sentence earns its place by adding either scope, consequences, or a prerequisite.

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 zero-parameter read-only list tool, the description covers the resource, the specific suppression types, the operational consequence of suppression, and the required auth token. It omits response format details, but no output schema exists and the information provided is sufficient for an agent to call it correctly.

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

Parameters4/5

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

The tool has zero parameters and an empty input schema, so there is nothing for the description to document about parameters. The baseline of 4 is appropriate because the description adds no misleading parameter information and the schema is fully covered.

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 states a specific verb ('List') and resource ('suppressed addresses'), and names the categories (unsubscribes, hard bounces, spam complaints, manual) that define the scope. This clearly distinguishes it from sibling tools like mailkite_add_suppression and mailkite_remove_suppression, which mutate the same resource.

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 by explaining that sends to suppressed addresses are dropped before delivery, which tells an agent why listing suppressions is useful before sending. It also states the prerequisite 'management session token,' but it does not explicitly mention alternatives or when not to use this tool.

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

mailkite_list_templatesA
Read-only
Inspect

List your saved email templates (light metadata only — no body). Use getTemplate for the full template. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

annotations already mark readOnlyHint=true, and the description adds meaningful context: only light metadata is returned, not the body, plus a specific auth requirement. This goes beyond the annotation by setting expectations on payload scope.

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 zero waste: the verb, scope, payload detail, alternative, and auth are each front-loaded and purposeful. Every sentence 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?

For a zero-parameter read tool with no output schema, the description states purpose, return granularity, alternative, and auth. Minor details like pagination or ordering are not broadly expected, so the coverage is solid but not flawless.

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 the schema is already fully documented (empty object). With no parameters to elaborate on, the baseline 4 is appropriate for this 0-param case.

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 states a specific verb and resource: 'List your saved email templates' with the clarifying scope 'light metadata only — no body'. It differentiates from getTemplate and implicitly from list_base_templates by emphasizing saved templates, so an agent can clearly tell it apart from siblings.

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 an explicit alternative ('Use getTemplate for the full template') and a precondition ('Requires a management session token'). It does not contrast with mailkite_list_base_templates, but the main decision between list and get template is well-specified.

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

mailkite_list_triggersA
Read-only
Inspect

List the triggers attached to a sequence — the doors into it. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds an authentication requirement (mk_live_… API key) not present in structured data. It does not enumerate return fields, but for a read-only list the important behavioral context is covered.

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

Conciseness5/5

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

One sentence with no filler; the action and scope are front-loaded and the authentication note is relevant and compact.

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 single-parameter read-only list with no output schema, the description conveys what is listed, the required identifier, and authentication. It could add pagination or return-shape details, but they are not essential for this simple list operation.

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

Parameters4/5

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

Schema coverage is 100%, but the id description is tautological ('Path parameter `id`'). The tool description supplies the missing semantics by identifying id as the sequence whose triggers are listed.

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 is specific: verb 'List' + resource 'triggers' + scoping 'attached to a sequence'. The 'doors into it' metaphor reinforces the role and distinguishes it from sequence-level tools and trigger mutation siblings.

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?

Clear context is provided: this tool reads triggers belonging to a particular sequence. It does not explicitly name alternatives or exclusions, but the scoping makes the appropriate use case evident among the many sibling tools.

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

mailkite_meA
Read-only
Inspect

The account behind this credential: email, whether it is verified (sending is blocked until it is), and plan. Use to poll verification state after register(). Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds useful context beyond that: it explains that sending is blocked until the account is verified, and that an API key (mk_live_…) is required. This enriches the agent's understanding without contradicting the annotations.

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

Conciseness5/5

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

Three short sentences, each earning its place: the returned data, the intended use, and the credential requirement. It is front-loaded with the most important information and has no filler.

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

Completeness4/5

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

For a zero-parameter, read-only tool, the description covers the important context: the involved resource, verification gating, the use case, and the required API key. It does not list exact response field names, but this is a minor gap since the discovered values are named.

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

Parameters4/5

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

There are zero parameters and schema description coverage is 100%, so there is no parameter ambiguity. The description appropriately focuses on what the credential lookup returns rather than trying to explain nonexistent inputs.

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 states exactly what the tool returns: the account behind the credential (email, verification status, and plan). It also ties it to a concrete lifecycle use case (polling verification after register()), which differentiates it from the many resource-specific sibling tools.

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?

It explicitly says when to use it: 'Use to poll verification state after register()'. It does not name alternative tools or state when not to use it, but for a zero-parameter account-info tool this is clear enough guidance.

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

mailkite_registerAInspect

Create a MailKite account from just an email — no password. Returns the new account's API key immediately; a verification link is emailed, and SENDING stays blocked until the address is verified (poll me()). An existing email returns 409 account_exists with no credentials. Powers plugin/CLI onboarding. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoReferral code of the account that referred this signup, when any.
emailYesThe account email. A verification link is sent to it — the account cannot send email until the address is verified, which is what makes registering safe without a password.
channelNoDistribution-channel slug this registration came through (e.g. wordpress-plugin). Invalid values are dropped, never an error.
referrerNoFirst-touch landing referrer URL, when known. Invalid values are dropped, never an error.

TDQS

A4.4/5.0
Behavior5/5

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

Description discloses behavior well beyond annotations: immediate API key return, verification email, blocked sending until verified, 409 on existing email, and session-token requirement. Annotations only provide readOnlyHint/idempotentHint/destructiveHint (all false), so the description carries full behavioral disclosure and does so comprehensively.

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 focused paragraph with three sentences. It front-loads the core purpose, then adds return/verification details, then error behavior and use case. All sentences earn their place; only minor trimming (e.g., 'Powers plugin/CLI onboarding' could be omitted) but structure is strong.

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 registration tool with no output schema, the description fully covers what an agent needs: what it returns (API key), verification flow, error for existing email, requirement for session token, and mentions polling helper. There are no missing call-time details that would leave an agent unsure how to invoke or interpret results.

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% and each parameter (email, ref, channel, referrer) already has a descriptive explanation. The description adds no new param-level meaning beyond what schema provides (e.g., it doesn't clarify the format of ref or channel further). It's adequate but not additive beyond the schema's already good 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?

States a specific action (create account), the resource (MailKite), and key characteristics (no password, returns API key). It clearly distinguishes from siblings like mailkite_get_api_key or mailkite_rotate_api_key by focusing on account creation. The 409 existing-email case adds precision.

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?

Mentions 'Powers plugin/CLI onboarding' which gives a plausible use case, and the requirements (management session token) are clear. It doesn't explicitly list alternatives or when-not-to-use, but the uniqueness of account creation among siblings makes the context clear enough.

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

mailkite_register_domainAInspect

Register (buy) a domain on the customer's behalf; provisions mail DNS and adds it to the account in one call. Charges the registrar. Requires a management session token. Does NOT register automatically — returns a dashboard link for the user to review the price and confirm. An assistant can never purchase a domain on its own.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsNo
domainYes
dryRunNo
contactYes

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint false, idempotentHint false, destructiveHint false), the description adds crucial behavioral details: it charges the registrar, requires a management session token, does not register automatically but returns a dashboard link for user review, and explicitly states an assistant cannot purchase alone. This fully discloses side effects and auth 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?

Two sentences, front-loaded with the primary action and side effects, then the crucial limitation. Every sentence carries useful information with no filler. The structure is efficient 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 the tool's complexity (4 params, nested object, financial consequences) and absence of an output schema, the description covers key aspects: the outcome (returns a dashboard link), auth requirement, and the non-automatic nature. However, it omits explanation of the dryRun parameter (which would be very useful) and does not mention the contact object's purpose beyond the schema. Still, an agent can determine when to call it and roughly what to expect.

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

Parameters2/5

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

The schema has 4 parameters with 0% description coverage overall (only nested fields like phone have descriptions). The description does not explain the meaning of 'years' or the purpose of 'dryRun', which is critical for a domain purchase (to test without charging). It also does not describe the required 'contact' object structure beyond what the schema already shows.

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 states a specific verb and resource: 'Register (buy) a domain on the customer's behalf'. It clearly distinguishes this from sibling tools like check_domain_availability or create_domain by emphasizing the purchase and provisioning in one call. The scope is unambiguous.

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

Usage Guidelines4/5

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

It provides clear context on when to use: it requires a management session token and explicitly warns that an assistant can never purchase a domain on its own, indicating it is not for finalizing the purchase without user confirmation. However, it does not name alternatives like check_domain_availability for pre-checking, leaving some inference to the agent.

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

mailkite_register_oauth_clientAInspect

Register an OAuth client for this installation (RFC 7591 dynamic client registration) — step 1 of linking an existing MailKite account to your app. No pre-shared secret and no manual app review: you get a client_id back immediately and prove yourself with PKCE. Register once per install and keep the client_id. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
client_nameNoHuman-readable name shown to the user on the consent screen. Include the site or install it belongs to so someone with several connections can tell them apart.
redirect_urisYesWhere the authorization code is delivered. Every entry must be an absolute https URL — http is accepted only on loopback, for local development. A javascript: or data: URI is rejected.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide only false hints, so the description carries the full burden. It discloses key behavioral traits: no pre-shared secret, no manual review, immediate client_id return, PKCE, and the need to store the client_id. It does not mention persistence or revocation details, but the provided context is genuinely helpful.

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?

Four concise sentences, no wordiness. Each sentence carries a unique purpose: the protocol and step, the no-secret/no-review benefit, the one-time usage and storage instruction, and the session token requirement. The core action is front-loaded.

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

Completeness4/5

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

No output schema exists, so the description must at least indicate the return value. It states 'you get a client_id back immediately,' and covers lifecycle ('once per install', 'keep the client_id'), prerequisites, and the step in the flow. It could be more explicit about subsequent steps (e.g., using the client_id with exchange_oauth_token), but this is minor given the simple parameter set.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains both parameters well (client_name and redirect_uris). The description text does not add any parameter-specific semantics beyond what the schema states. Thus the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource ('Register an OAuth client') and adds context: 'step 1 of linking an existing MailKite account to your app.' The mention of RFC 7591 and the explicit 'step 1' clearly distinguish it from siblings like mailkite_exchange_oauth_token and mailkite_register.

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?

It provides clear usage guidance: 'Register once per install and keep the client_id' and 'Requires a management session token.' It also frames the tool as the first step in a flow. However, it does not explicitly name alternatives or give a when-not-to-use condition, so it falls short of a 5.

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

mailkite_remove_list_contactA
DestructiveIdempotent
Inspect

Remove one contact from a list (the contact itself is kept). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
contactIdYesPath parameter `contactId`.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as destructive and idempotent. The description adds important context beyond annotations: it specifies the destructive scope (removes the list membership, not the contact) and discloses the authentication requirement. This helps the agent anticipate the operation's side effects accurately.

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

Conciseness5/5

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

The description is a single, tight sentence that front-loads the action and resource, then adds a crucial scoping clarification. Every word earns its place with no wasted 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?

For a simple two-parameter mutation with annotations covering safety and idempotency, the description covers purpose, effect scope, and auth requirement. The only notable gap is the lack of explicit parameter-to-role mapping (which id is the list), but the tool name and param names make this reasonably inferable.

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?

Although schema description coverage is 100%, the schema descriptions are tautological ('Path parameter `id`') and provide no real semantics. The description does not explain which parameter refers to the list and which to the contact, leaving the agent to infer from parameter names and the tool name alone.

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

Purpose5/5

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

The description states a specific verb ('Remove'), a precise resource ('one contact from a list'), and immediately clarifies the action's scope ('the contact itself is kept'). This clearly distinguishes it from sibling operations like delete_list or add_list_contacts, so an agent can tell what this tool does without ambiguity.

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?

It gives a clear usage context by requiring a management session token, which is a necessary prerequisite. The clarification that the contact itself is kept also implicitly guides agents away from using this tool when actual contact deletion is intended, though it does not explicitly name sibling alternatives or state 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.

mailkite_remove_suppressionA
DestructiveIdempotent
Inspect

Remove an address from the suppression list (URL-encode the email in the path). Removing an unsuppressed address is a no-op success. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesPath parameter `email`.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already carry idempotent and destructive hints, but the description adds genuine detail beyond them: the need to URL-encode the email in the path and the requirement of a management session token. It also clarifies the exact no-op success behavior, which makes the idempotency hint concrete. 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 three short sentences with no fluff. It front-loads the core action, then adds only high-value operational details: URL-encoding, idempotent no-op behavior, and auth requirement. Every sentence 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?

For a single-parameter, no-output-schema operation, this is nearly complete: it covers the required auth context, the URL-encoding nuance, and the key idempotent behavior. The only minor gap is not explicitly describing the expected return/response shape, though 'no-op success' provides a reasonable implication.

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 the baseline is 3, but the description adds valuable parameter guidance by explicitly requiring URL-encoding of the email in the path. This is a practical semantic detail that the schema alone does not convey.

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 opens with a specific verb and resource: 'Remove an address from the suppression list.' This clearly differentiates the tool from siblings like mailkite_add_suppression and mailkite_list_suppressions without requiring the agent to infer intent from the schema.

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 useful context: it requires a management session token and states that removing an unsuppressed address is a no-op. However, it never explicitly names alternatives such as add_suppression or explains when an agent should choose this tool over those siblings, leaving that decision largely implied.

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

mailkite_retry_deliveriesAInspect

Replay a whole selection of webhook deliveries in one call — the bulk form of retryDelivery. Pass deliveryIds (replay those exact deliveries), messageIds (replay each message's most recent delivery per route), and/or threadIds (expanded server-side to every message in the conversation); they combine. At most 50 ids per request, so send larger selections as sequential batches. Always answers 200 with a per-id results array — one unreachable endpoint never hides the outcomes of the rest — so branch on ok and results, not the HTTP status. An id you don't own is reported as skipped with reason not_found, exactly as the single-delivery endpoint 404s. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdsNoConversation ids — expanded server-side to every message in the thread, then treated as `messageIds`. Lets a thread-grouped list select whole conversations.
messageIdsNoFor each message (msg_…), replay its most recent delivery per route. A message no webhook ever fired for is reported as skipped with reason `no_delivery`.
deliveryIdsNoReplay exactly these delivery rows (dlv_…), to the URL each recorded.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false, which convey little about side effects. The description adds crucial behavior: always returns HTTP 200 with a per-id results array, instructs to branch on 'ok' and 'results' rather than status, explains that unowned ids are skipped with reason 'not_found' (mirroring the 404 of the single endpoint), and states the auth requirement (management session token). This is rich context beyond the annotations.

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

Conciseness5/5

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

Every sentence earns its place: purpose, parameter semantics, limit, response behavior, error handling, and auth. Information is front-loaded with the core purpose and then logically sequenced. Despite being detailed, it remains tight and readable with no repetition.

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 no output schema, the description compensates by describing the response shape (results array with per-id outcomes) and the 'ok' field. It covers edge cases (not_found, no_delivery), the interaction of parameters, and the required token. An agent has everything needed to call this correctly, including how to handle partial failures.

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

Parameters4/5

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

The schema already provides descriptions for all three parameters (100% coverage), so the baseline is 3. The description adds value by clarifying how parameters combine ('they combine'), the 50-id cap, and the server-side expansion of threadIds. It also notes the 'no_delivery' skip reason for messageIds. This goes beyond the schema, warranting a 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 opens with a specific verb ('Replay') and resource ('webhook deliveries'), explicitly calling itself 'the bulk form of retryDelivery,' which distinguishes it from the single-delivery sibling. It states exactly what it does and how it relates to an alternative, leaving no ambiguity.

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?

It names the single-delivery tool (retryDelivery) as the non-bulk alternative and explains when to use this one (bulk selection). It also gives explicit guidance on combining id types, the 50-id limit, and batching larger selections sequentially. This is actionable and prevents misuse.

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

mailkite_retry_deliveryBInspect

Re-deliver a stored message to its webhook. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already indicate non-readonly, non-idempotent, non-destructive. The description adds the authentication requirement (management session token), which is useful context. However, it does not explain the consequences of re-delivery (e.g., whether it creates a duplicate webhook call, whether it fails if the message is already delivered, or what happens on success/error). It adds some value but does not fully disclose behavioral implications.

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 exceptionally short: two sentences, no filler. It front-loads the core action ('Re-deliver a stored message to its webhook') and places the token requirement only secondary. Every clause adds some useful information. It is concise, but not as full as it could be without becoming bloated.

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?

For a simple one-parameter tool this description covers only the action and a required credential. It does not indicate the return format (no output schema) or any errors (e.g., message not found, already retried). It also fails to mention how this differs from the sibling 'mailkite_retry_deliveries', which might be the obvious alternative. The description is adequate for a basic understanding but incomplete for an agent to confidently invoke it without external 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?

Input schema coverage is 100% for the single required parameter 'id' (described as 'Path parameter `id`'). The description provides no additional meaning for this parameter, so it does not improve on the schema. With high coverage, the baseline is 3, which 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 clearly states the tool's function: 'Re-deliver a stored message to its webhook.' This identifies a specific action (re-delivery) and resource (stored message), and is understandable on its own. It does not explicitly compare to the sibling 'mailkite_retry_deliveries' (plural), but the singular form and mention of 'a stored message' imply a single-item operation.

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 only usage hint is a prerequisite: 'Requires a management session token.' There is no guidance on when to use this tool instead of the alternative 'mailkite_retry_deliveries', no mention of typical scenarios (e.g., when a webhook delivery fails), and no discussion of prerequisites beyond the token. The tool cannot be placed in context relative to its siblings.

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

mailkite_rotate_api_keyAInspect

Rotate the account API key: the old key stops working immediately and a fresh one is returned. The plaintext is only shown here. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses key behavioral traits: the old key stops working immediately (irreversible invalidation), the fresh key is returned, and the plaintext is only shown here. It also notes the auth requirement (management session token). Annotations only provide readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the description adds meaningful 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, each earning its place: the action and immediate effect, the plaintext visibility warning, and the auth requirement. No filler or repetition of schema/annotation content.

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

Completeness4/5

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

For a zero-parameter, no-output-schema tool, the description is nearly complete. It covers the action, the consequence, the return value, and the prerequisite. The only minor gap is not stating what happens if the management session token is invalid, but that is a standard auth failure and not essential for correct invocation.

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

Parameters4/5

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

The tool has zero parameters, so the schema provides no parameter semantics. The description compensates by explaining what the tool does and what it returns (a fresh key), which is sufficient for an agent to invoke it correctly. Baseline 4 for zero-param tools 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 states a specific verb ('Rotate'), a specific resource ('the account API key'), and the immediate effect ('the old key stops working immediately and a fresh one is returned'). This clearly distinguishes it from sibling tools like mailkite_get_api_key and mailkite_create_scoped_key, which serve different purposes.

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 clearly states the context for use: rotating the account API key, and notes the requirement of a management session token. It doesn't explicitly name alternatives or exclusions, but the action is specific enough that an agent can infer when to use it versus related key-management tools.

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

mailkite_rotate_app_passwordAInspect

Replace an app password's secret, keeping its scope. The old secret stops authenticating immediately; the new one is returned once. Use after a leak, when revoking would mean reconfiguring every client. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses key side-effects: 'The old secret stops authenticating immediately' and 'the new one is returned once.' It also states a prerequisite ('Requires a management session token'), providing meaningful behavioral context that annotations do not convey.

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

Conciseness5/5

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

Three short sentences, each earning its place: action and effect, side-effect/return behavior, and usage guidance. The key behavior is front-loaded, with no redundant filler.

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 one-parameter mutation tool with annotations presentcars, the description covers the action, when to use it, the immediate invalidation side-effect, the one-time return of the new secret, and the auth requirement. Nothing critical is missing 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 single parameter is documented in the schema as 'Path parameter `id`', which is minimal but present. Schema description coverage is 100%, so the baseline applies; the tool description does not add meaning to the `id` parameter beyond what the schema states.

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 states a specific verb ('Replace') and resource ('an app password's secret'), and adds scope ('keeping its scope'). It clearly distinguishes this from sibling tools like mailkite_update_app_password and mailkite_delete_app_password by focusing on rotating the secret rather than editing or deleting the password.

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 clear context for use ('Use after a leak') and an implicit alternative ('when revoking would mean reconfiguring every client'). It does not explicitly name the alternative tool or state when not to use it, so it falls just short of full usage-guideline explicitness.

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

mailkite_routeAInspect

Route a message to one of your registered routes (by routeId or address), running that route's action — agent, webhook, or forward. The route must already exist on your account; arbitrary destinations are not allowed. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesSender address recorded on the message.
htmlNoHTML body.
textNoPlain-text body.
addressNoTarget route by the address it matches. One of routeId or address is required.
routeIdNoTarget route by id (rte_…). One of routeId or address is required. The route must already be registered on this account.
subjectNoOptional subject line.

TDQS

A3.5/5.0
Behavior3/5

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

Beyond the annotations, the description usefully adds that this tool runs an existing route's action and forbids arbitrary destinations. It does not disclose side effects in detail, like the fact that agent/webhook/forward actions may invoke external systems, nor does it confirm the absence or presence of idempotent behavior for a non-idempotent tool.

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

Conciseness5/5

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

The description is three sentences with no filler. The core behavior is front-loaded, constraints are stated next, and the API key requirement is appended cleanly. 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?

For a six-parameter tool with no output schema and no annotations covering mutation side effects, the description covers the key prerequisites and behavior. It is missing any note about the response/return shape or any pointer to the route's action configuration, which an agent might need to decide whether to route or directly send.

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 provides full descriptions for all six parameters, including the routeId/address requirement. The description re-emphasizes that one of routeId or address is needed and that the route must already exist, but adds no substantially new per-parameter meaning beyond the schema.

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 a specific action (route a message) and a specific resource (registered routes), and even names the route action types (agent, webhook, or forward). It is clear about what the tool does, though it does not differentiate against the similarly named sibling mailkite_deliver_to_route.

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 relevant context: the route must already exist, arbitrary destinations are not allowed, and an API key is needed. It does not explicitly state when to choose this tool over related sending/route tools like mailkite_send or mailkite_deliver_to_route.

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

mailkite_sendAInspect

Send a message over a verified domain. Pass templateId (+ optional templateData) to send from a saved or base template. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYesOne recipient or a list.
bccNo
fromYesAn address on a verified domain.
htmlNo
textNo
headersNoExtra raw MIME headers, applied after threading headers (caller wins). Use for what the structured fields can't express — e.g. `List-Unsubscribe`, a dedup/idempotency key (`X-Entity-Ref-ID`), or a tag header (`X-Tag`). Carried on both immediate and scheduled sends.
replyToNo
subjectNoRequired unless supplied by a template.
metadataNoStructured metadata kept SERVER-SIDE for this send: stored on the message and echoed back on reads, but never emitted as a MIME header, so order ids, tenant keys, and internal correlation stay off the wire (that is the difference from `headers`). Scalar values only; at most 20 keys, keys ≤ 64 characters, string values ≤ 512.
sequenceNoEnroll this recipient in a sequence when the send succeeds — the name or id of an ACTIVE sequence. Naming a sequence IS the consent: no trigger is involved, and an unnamed send enrols in nothing. The sequence's input is auto-injected from `templateData` and `metadata` (add `sequenceInput` for explicit params), and the message itself is readable in steps as {{trigger.from}}, {{trigger.subject}}, {{trigger.messageId}}. A name that does not exist, or a sequence that is not active, is answered on this call rather than silently ignored.
inReplyToNo
templateIdNoSend using a saved template — a user template (tpl_…) or a base template (base_…). Its subject/html/text seed the message; explicit subject/html/text here override them.
trackOpensNoOpen-tracking override for this send (HTML only). Omitted → the from-domain's default applies.
attachmentsNo
scheduledAtNoSend later: ISO 8601, simple relative natural language ("in 2 hours"), or a ms-epoch. A future time parks the message with the scheduler — the response carries an ssnd_… id and status "scheduled", cancelable via DELETE /v1/scheduled/{id}. Omitted or past sends now.
trackClicksNoClick-tracking override for this send (HTML only): http(s) links are rewritten to a signed redirect that records the click, then 302s to the destination. Omitted → the from-domain's default applies.
templateDataNoValues substituted into the template's {{merge_tags}} (e.g. {"name":"Ann"} fills {{name}}). HTML values are auto-escaped.
sequenceInputNoExplicit input for the sequence named in `sequence`, checked against its declared signature. Merged OVER the values auto-injected from `templateData` and `metadata`, so an explicit value always wins over one inferred from the message.

TDQS

A4/5.0
Behavior4/5

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

Adds meaningful behavior beyond annotations: headers 'carried on both immediate and scheduled sends', metadata is structured and survives, template data is auto-escaped, sequence names trigger consent-based membership, and subject can be supplied by template. The readOnlyHint=false annotation is consistent with a send operation; no contradictions.

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

Conciseness4/5

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

The description is compact and front-loaded with the core action, then covers key behaviors in a logical order. It's about three sentences but packed with necessary detail; no filler. Slightly long due to headers examples, but that's justified by complexity.

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

Completeness4/5

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

Given the tool's complexity (11+ parameters) and no output schema, the description covers the critical decisions: template vs explicit content, headers use cases, scheduling, tracking overrides, and metadata purpose. It omits obvious param names (left to the schema) and doesn't attempt to describe return values, which aligns with the rule.

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?

While the schema already describes several fields, the description adds semantic depth: precedence rules for subject (template vs explicit), header override behavior, the role of templateData, and what metadata is used for (tenant, correlation). This goes beyond basic types and helps an agent pick the right parameter.

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 ('Send a message over a verified domain') and distinguishes from sibling tools like mailkite_send_broadcast by focusing on direct sends with templates, headers, and scheduling. It doesn't explicitly say 'email' or contrast with alternatives, but the combination of verified domain, from/to, subject, and template makes the purpose unambiguous.

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

Usage Guidelines4/5

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

Provides concrete situational guidance: when to pass templateId vs explicit content, using headers for what structured fields can't express, and the behavior of trackOpens overrides. It doesn't mention when to prefer send_broadcast or send_event, but the description effectively explains the main parameters and their precedence rules (e.g., template subject fallback, header override behavior).

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

mailkite_send_batchAInspect

Send one personalized message per recipient (up to 50) in a single call. Shared fields form the base message; each recipients[] entry gets its own message to exactly one address, with per-recipient templateData and headers merged over the shared ones. Every message passes the same gates as send() and gets its own id; the response reports each recipient's outcome in order, so a batch can partially succeed. Pass scheduledAt to park the whole batch for later (one cancelable ssnd_… per recipient). Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesAn address on a verified domain. Shared by every message in the batch.
htmlNoMay contain {{merge_tags}}, filled per recipient.
textNoMay contain {{merge_tags}}, filled per recipient.
headersNoShared extra raw MIME headers for every message, applied after threading headers (caller wins); a recipient's own headers override these key-by-key.
replyToNo
subjectNoRequired unless supplied by a template. May contain {{merge_tags}}, filled per recipient.
inReplyToNoThread every message under this Message-ID.
recipientsYesOne entry per message. Order is preserved in the response's results[].
templateIdNoSend using a saved template — a user template (tpl_…) or a base template (base_…). Its subject/html/text seed every message; explicit subject/html/text here override them.
trackOpensNoOpen-tracking override for every message in the batch (HTML only). Omitted → the from-domain's default applies.
attachmentsNoAttached to every message in the batch. Same shape as send()'s attachments.
scheduledAtNoSend later: ISO 8601, simple relative natural language ("in 2 hours"), or a ms-epoch. A future time parks every message with the scheduler (each gets its own ssnd_… id, individually cancelable); omitted or past sends now.
trackClicksNoClick-tracking override for every message in the batch (HTML only): http(s) links are rewritten to a signed redirect that records the click, then 302s to the destination. Omitted → the from-domain's default applies.
templateDataNoShared default merge values for every recipient; a recipient's own templateData overrides these key-by-key. HTML values are auto-escaped.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations are minimal (readOnlyHint false, idempotentHint false, destructiveHint false), so the description carries the burden. It discloses that every message passes the same gates as send(), gets its own id, partial success possible, and scheduledAt creates individual ssnd_ ids that are cancelable. It also mentions API key requirement. This is transparent but could delve into auth specifics or rate limits, which is not present.

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 paragraph but well-structured, front-loading the core purpose and key behaviors. Each sentence adds useful information without fluff. It avoids excessive detail and is easy to scan.

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 complexity (14 params, nested objects) and lack of output schema, the description covers essential aspects: batch semantics, merge rules, partial success, scheduling, and auth. It does not explicitly describe error formats or response structure in detail, but the note about response order and partial success is helpful. The description is adequate for an agent to use 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 93%, so the schema already documents most parameters. The description adds context about merging semantics (shared fields base, per-recipient overrides) and scheduledAt behavior, which supplements schema. However, most parameters (e.g., from, subject) are self-explanatory in schema, so description adds little extra value; the baseline is maintained.

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

Purpose5/5

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

The description clearly states that the tool sends one personalized message per recipient in a single call, up to 50 recipients, with per-recipient templateData and headers merged over shared ones. It distinguishes itself from the sibling mailkite_send by emphasizing batch capabilities and per-recipient customization.

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 batch sending with personalization opportunties, and contrasts with send() for single messages inevitably. However it does not explicitly state when not to use it (e.g., for single messages) or recommend alternatives such as send_broadcast. The clear mention of batch vs single sends provides some guidance.

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

mailkite_send_broadcastAInspect

Send a broadcast now, or pass an ISO 8601 scheduledAt to schedule it. A one-click unsubscribe is always added. Returns the status and resolved audience count. Requires a management session token. Does NOT register automatically — returns a dashboard link for the user to review the price and confirm. An assistant can never purchase a domain on its own.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
scheduledAtNo

TDQS

A4.4/5.0
Behavior5/5

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

The description discloses important behavioral traits beyond annotations: it always adds a one-click unsubscribe, it does NOT register automatically and returns a dashboard link for price review and confirmation, and it explicitly states an assistant can never purchase a domain on its own. This is rich behavioral context that annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) do not provide. 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 compact and front-loaded: it states the primary action first, then scheduling, then key behavioral notes. Every sentence adds value, and the critical warning about not purchasing domains is placed at the end. No wasted words.

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

Completeness4/5

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

The description covers the main action, scheduling, return value, authentication requirement, and a critical limitation. It doesn't explain what `id` refers to or what the resolved audience count means, but given the tool's complexity and the presence of sibling tools, the description is fairly complete. The lack of an output schema is partially mitigated by the description mentioning the return status and audience count.

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 50%: the `id` parameter is documented as a path parameter, but `scheduledAt` has no description in the schema. The description adds meaning by explaining `scheduledAt` is an ISO 8601 string for scheduling, which compensates for the schema gap. However, it doesn't explain what `id` refers to (likely a broadcast ID), so the description only partially adds 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 tool sends a broadcast now or schedules one with an ISO 8601 `scheduledAt` parameter. It distinguishes itself from sibling tools like mailkite_send, mailkite_send_batch, and mailkite_send_event by focusing on broadcast sending, and it explicitly mentions the return of status and resolved audience count.

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 on when to use this tool: to send or schedule a broadcast. It does not explicitly name alternative tools or state when not to use it, but the context is clear enough given the sibling list. It also mentions the requirement of a management session token, which is a usage prerequisite.

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

mailkite_send_eventAInspect

Record one application-level fact about a user — user.created, trial.expiring, payment.failed. THE primary way a sequence starts on a developer platform: your application already knows when a payment failed, so it says so, and every enabled trigger listening for that name enrolls the contact with the payload as its input. Identify the subject with email or contactId (never both). Pass a dedupeKey to make retries idempotent: a repeat returns the original event with duplicate: true rather than enrolling anyone twice. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEvent name: 1-64 characters of letters, digits, dot, dash, or underscore, starting alphanumeric. Names beginning `mailkite.`, `mailkite:`, or `email.` are reserved for platform events.
emailNoThe address this event is about. Give either this or `contactId`, never both. An address we don't hold a contact for still records — the event is an observation, not a subscription, so no contact is created as a side effect.
eventNoAlias for `name`, accepted so a payload written for another provider works unchanged. `name` wins when both are given.
payloadNoFree-form context carried with the event. Sequence steps read it as {{event.*}} for merge tags and, from conditions on, for branching.
contactIdNoA contact you own (ctc_…), as an alternative to `email`. Give either this or `email`, never both.
dedupeKeyNoIdempotency key. A second POST with the same key returns the ORIGINAL event and `duplicate: true` instead of recording a second one — so a retried webhook can never enroll the same contact twice.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behaviors: retries with dedupeKey return the original event with duplicate:true, unknown addresses are recorded without creating a contact, name/event alias handling, reserved name prefixes, and an API key requirement. This significantly exceeds what readOnly/idempotent/destructive hints 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 dense but not bloated: it front-loads the core action and examples, then covers subject identification, idempotency, and auth, all in a few sentences. The length is justified by the complexity of the tool.

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 six-parameter event-ingestion tool with no output schema, the description covers identification semantics, trigger enrollment, idempotent retries, reserved names, and auth. It could detail the success response shape or error conditions, but enough is present for an agent to call the tool correctly.

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

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 every parameter. The description adds the mutual-exclusion rule (email/contactId never both) and the idempotency effect of dedupeKey, but most of this is also present in the parameter descriptions, so the incremental value is modest.

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

Purpose5/5

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

The description names a specific verb (record), a specific resource (application-level event), and concrete examples (user.created, trial.expiring, payment.failed), making the tool's job unmistakable. It also positions it as the primary way a sequence starts, which separates it from send/send_batch and from list_events.

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?

It clearly states when to use this tool: when the application already knows a fact like a failed payment and needs the event observed by every enabled trigger. It stops short of explicitly naming sibling alternatives such as list_events or create_trigger and saying 'use those instead,' but the context is otherwise clear.

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

mailkite_set_mailbox_message_flagsAInspect

Replace a message's IMAP flags (e.g. mark it Seen). Flags set here are the same ones an IMAP client sees. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesPath parameter `uid`.
flagsYesThe complete flag set to store, space-separated and WITHOUT leading backslashes (e.g. `Seen Flagged`). This replaces the message's flags rather than merging.
addressYesQuery parameter `address`.

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: it makes clear the operation replaces rather than merges flags, that the flags are IMAP-visible, and that a management session token is required. These are meaningful details not fully captured by the readOnlyHint/idempotentHint/destructiveHint 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 short sentences, each earning its place: the core action, the IMAP-level behavior, and the required session token. Information is front-loaded and there is no filler.

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

Completeness4/5

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

For a simple flag-setting tool, the description covers the core action, the replace behavior, and authentication. A small gap is that the 'address' parameter is left semantically vague — the schema only labels it as a query parameter — so an agent may need additional inference about whether it refers to a mailbox address or another entity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description itself does not meaningfully elaborate on the parameters beyond what the schema already says, though it does reinforce the replace semantics of the flags 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?

The description uses a specific verb ('Replace') and a precise resource ('a message's IMAP flags'), with an example ('mark it Seen') that makes the operation unambiguous. It also clarifies the flags are the same as those seen by an IMAP client, which distinguishes this from other flag-adjacent or mailbox operations.

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 intended use is implied by the name and description, and the auth prerequisite ('Requires a management session token') is helpful. However, the description does not explicitly state when to use this tool over alternatives or when not to use it, leaving sibling differentiation mostly to the tool name.

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

mailkite_set_tracking_webhookA
DestructiveIdempotent
Inspect

Set or replace the domain's dedicated tracking-event webhook: an HTTPS endpoint that receives signed email.* engagement events (email.sent / email.bounced / email.complained / email.opened / email.clicked, shaped per the tracking-event schema) SEPARATELY from inbound mail. This is the split-endpoint override for consumers that keep engagement events away from their inbound webhook (e.g. django-anymail's paired views); most consumers should prefer setWebhookEvents, which delivers everything to the one inbound webhook. When both are configured, this URL wins for engagement events. Returns the signing secret (the same account secret as inbound deliveries). Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
urlYesHTTPS endpoint to receive signed email.* engagement events (sent/bounced/complained/opened/clicked). Deliberately separate from the inbound-mail webhook, so inbound consumers never see event types they don't expect.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=true) are consistent with 'Set or replace,' and the description adds substantive behavioral context beyond annotations: it returns the signing secret, requires a management session token, and explains that this URL wins for engagement events when both webhooks are configured. 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 dense but every sentence earns its place: it defines the action, lists events, explains the split-endpoint rationale, names the preferred alternative, gives precedence, return value, and auth requirement. Front-loaded with the core purpose before contextual 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?

For a webhook-configuration tool with no output schema, the description covers what it does, when to use it, how it differs from alternatives, precedence, return value (signing secret), and authentication. The reference to the tracking-event schema is sufficient for the endpoint format. No critical gap remains.

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

Parameters3/5

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

Schema description coverage is 100%, and the url parameter's description is already rich (HTTPS endpoint, event types, separation from inbound). The tool description mostly restates the same semantics and does not add new meaning for either parameter; 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 names a specific verb and resource: 'Set or replace the domain's dedicated tracking-event webhook,' listing the exact engagement events (email.sent/bounced/complained/opened/clicked) and explicitly distinguishing it from the inbound-mail webhook. It also contrasts with the sibling setWebhookEvents, so an agent clearly knows what this tool does and how it differs.

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

Usage Guidelines5/5

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

The description explicitly says 'most consumers should prefer setWebhookEvents' and gives the condition for using this tool: 'consumers that keep engagement events away from their inbound webhook (e.g. django-anymail's paired views).' It also states precedence when both are configured, providing unambiguous selection guidance.

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

mailkite_set_webhookB
DestructiveIdempotent
Inspect

Set or replace the domain's catch-all webhook. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
urlYes

TDQS

B3.3/5.0
Behavior4/5

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

The annotations already communicate destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds useful context beyond those annotations: it explicitly says 'set or replace,' which clarifies the overwrite semantics, and it calls out the need for a management session token. This is meaningful supplementary behavioral disclosure.

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 action and resource, then adds the key auth prerequisite. Every clause earns its place, and there is no redundant or filler content.

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 two-parameter mutation tool, the description is minimally adequate: it states the purpose and the auth requirement, and the annotations cover the destructive/idempotent behavior. However, it leaves the meaning of `id` and `url` implicit, and it does not clarify how this webhook relates to the many sibling webhook tools, so an agent would still have to infer or probe some details.

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 only 50%, with the `url` parameter entirely undocumented and `id` described only as 'Path parameter `id`.' The description does not explain that `id` likely identifies the domain or that `url` is the webhook endpoint, nor does it clarify expected formats or constraints. It does not compensate for the schema's gaps.

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 names a specific action ('Set or replace') and a specific resource ('the domain's catch-all webhook'), making the tool's purpose understandable. It also implicitly distinguishes this from sibling tools like mailkite_set_tracking_webhook via the 'catch-all' qualifier, though it does not explicitly route the agent away from those alternatives.

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 only guidance beyond the action is 'Requires a management session token,' which is a precondition rather than usage direction. There is no explanation of when to choose this tool over mailkite_set_tracking_webhook, mailkite_set_webhook_events, or mailkite_test_webhook, and no mention of alternative tools or exclusions.

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

mailkite_set_webhook_eventsA
DestructiveIdempotent
Inspect

Opt the domain's inbound webhook into engagement events — one webhook, all events. Pass "all" or a list of email.* tracking types (email.sent / email.bounced / email.complained / email.opened / email.clicked) and MailKite delivers them to the same webhook route that receives the domain's inbound mail; consumers switch on the payload's type (inbound mail is type email.received, engagement events follow the tracking-event schema). Off by default, so existing inbound consumers never see event types they didn't opt into. Events at the inbound webhook are signed with that route's secret (account secret fallback) — the same key inbound deliveries already use. If a dedicated tracking webhook URL is set (setTrackingWebhook), engagement events go there instead. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
eventsYesWhich email.* engagement events the domain's inbound webhook also receives: the literal "all", or a non-empty list of event types. Consumers distinguish deliveries by the payload's `type` (inbound mail is email.received; engagement events follow the tracking-event schema).

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint false, idempotentHint true, destructiveHint true), the description adds substantial behavioral context: events are delivered to the same inbound webhook route, consumers switch on payload type, events are signed with the route's secret or account fallback, events are off by default, and a management session token is required. This is rich, transparent disclosure that exceeds 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.

Conciseness4/5

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

The description is dense and packed with necessary operational details, front-loaded with the main action. While it is longer than a minimal two-sentence form, every clause earns its place by covering delivery location, default behavior, signing, and the tracking webhook alternative. It remains readable and efficient for the depth it offers.

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 two-parameter setter with no output schema, the description is exceptionally complete: it covers authentication, parameter semantics, interaction with an alternative webhook, event naming, payload routing, and default state. An agent has enough to invoke it correctly without needing further context beyond the 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% so baseline is 3, but the description adds real value by tying the `id` parameter to 'the domain's inbound webhook' and explaining the `events` parameter behavior ("Pass 'all' or a list of email.* tracking types...') in a practical sense. It goes beyond the schema's minimal 'Path parameter id' and the enum list, providing operational 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 opens with a specific verb and resource: 'Opt the domain's inbound webhook into engagement events'. It clearly distinguishes from siblings like set_tracking_webhook and delete_webhook_events by explaining this tool configures the existing inbound webhook to also receive tracking events. This leaves no ambiguity about what the tool does.

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

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 opt the inbound webhook into engagement events. It explicitly states the alternative when a dedicated tracking webhook is configured ('If a dedicated tracking webhook URL is set (setTrackingWebhook), engagement events go there instead'), and notes that the option is off by default. It does not explicitly mention the inverse tool for disabling, but the core when-to-use guidance is solid.

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

mailkite_start_sequenceAInspect

Start a sequence for one contact, directly — when your code already knows WHICH sequence it wants. Takes a sequence NAME or id, so "start the dunning sequence" needs no lookup. Returns the enrollment it created: the run you then inspect, follow, or cancel. Refused with 409 when the address is suppressed, is already running on a reentry: "once" sequence, or is missing a required input — and the response says which. Reach for sendEvent instead when your code only knows what HAPPENED and policy should decide what reacts. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoSender for this enrollment, when the sequence has no default (a send-triggered sequence normally inherits one from the triggering message, which a manual enroll does not have).
emailNoThe address to enroll. Give this or `contactId`.
inputNoThe sequence's input, checked against its declared signature. A missing required field refuses the start and says which — you find out here rather than days later as a blank merge tag.
sequenceYesPath parameter `sequence`.
cancelKeyNoYour own key for this enrollment. Cancel later with POST /v1/enrollments/cancel and this key — no need to store our id.
contactIdNoA contact you own (ctc_…), as an alternative to `email`.

TDQS

A5/5.0
Behavior5/5

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

Annotations are minimal (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description carries the burden of behavioral disclosure. It reveals error conditions (409 for suppression, already-running on 'once' sequences, missing input), the return value (the enrollment/run), the API key requirement, and the distinction from sendEvent — all 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?

Every sentence earns its place: the lead states the core purpose and the key differentiator, followed by concrete error semantics, the return value, the alternative tool, and the auth requirement. No redundancy; the most decision-relevant 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?

For a tool with 6 parameters, a nested object (input), and no output schema, the description is thorough: it covers return value, error handling, auth, and the exact use-case versus a sibling. The schema's rich per-parameter descriptions complement the description, so nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it clarifies that the sequence parameter accepts a name or id, explains the `from` parameter's fallback behavior, and details how `cancelKey` enables later cancellation without storing an id. These are genuinely useful clarifications an agent wouldn't get from the schema alone.

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

Purpose5/5

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

Clearly states the action (start a sequence) and the target resource (a contact), with a specific qualifier ('when your code already knows WHICH sequence it wants'). It also names the exact sibling alternative (sendEvent) and the condition that selects it, so an agent can distinguish it without opening the schema.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (when the sequence is known) and when not to (when policy should decide from an event, use sendEvent). It also explains the direct-by-name behavior ('start the dunning sequence needs no lookup'), which guides selection among the many sequence-related siblings.

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

mailkite_stop_sequenceAInspect

Stop whatever is chasing someone. Pass the cancelKey you set when starting — so you cancel with your own invoice or order id and never store ours — or pass sequence and email together when you did not set one. Always answers 200 with a count, so it is safe to fire blindly from a webhook. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoThe contact to stop, used with `sequence`.
sequenceNoSequence name or id. Use with `email` when no cancelKey was set.
cancelKeyNoThe key you passed to startSequence. Stops every in-flight run carrying it.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate this is not read-only, not idempotent, and not destructive, but the description adds valuable context: it always returns 200 with a count, so it is safe to fire blindly. It also clarifies that cancelKey stops every in-flight run carrying it, which is a behavioral trait beyond the schema. The only minor gap is that it doesn't explicitly state what the count represents, but the 'safe to fire blindly' note is a strong behavioral disclosure.

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, each earning its place: the first explains the two invocation modes, the second covers the safe-to-fire behavior, and the third states the auth requirement. The most important operational guidance is front-loaded, and there is zero filler.

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

Completeness4/5

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

For a tool with no output schema and no required parameters, the description covers the key decision (which parameter path to use), the safety profile (always 200), and the auth requirement (mk_live_… key). It doesn't describe the exact response shape beyond 'a count,' but given the tool's simplicity and the absence of an output schema, this is a minor gap. The description is complete enough for an agent to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all three parameters. The description adds meaning by explaining the relationship between cancelKey and the sequence+email pair, and by clarifying that cancelKey is the caller's own invoice/order id rather than a Mailkite-internal id. This goes beyond the schema's field descriptions and helps the agent understand the two mutually exclusive invocation modes.

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 opens with a clear, specific verb and resource: 'Stop whatever is chasing someone.' It distinguishes itself from sibling tools like mailkite_cancel_enrollment and mailkite_delete_sequence by focusing on stopping in-flight sequence runs via a cancelKey or sequence+email pair. The title 'Stop Sequence' is reinforced with concrete operational detail, so an agent can tell this apart from related tools.

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

Usage Guidelines5/5

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

The description explicitly states when to use each parameter path: pass cancelKey if you set one, or pass sequence and email together if you did not. It also notes the tool is safe to fire blindly from a webhook because it always answers 200 with a count. This is strong usage guidance that tells the agent exactly how to choose between the two invocation modes.

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

mailkite_suggest_subdomainA
Read-only
Inspect

Suggest a free, currently-unclaimed subdomain label to prefill the input with, plus the base zone it would live on. Read-only — suggesting does not reserve the name. Always take the zone from base rather than hard-coding it: which zones are on offer changes over time. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, so the description's read-only note is redundant, but it adds useful context: the suggestion does not reserve the name, and it requires a management session token. This goes beyond annotations and clarifies 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 concise, front-loaded with the primary purpose and the critical read-only caveat early. Every sentence adds value, and the guidance about not hard-coding zones is important and clearly stated.

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

Completeness4/5

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

Given that there is no output schema, the description covers the essential behavioral and return contract adequately, but it could potentially mention the format of the returned label or any additional response contextheb. However, for a suggestion tool with zero parameters, it is nearly complete.

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 no parameters, so the schema provides no semantics. The description explains the return contract (subdomain label and the base zone) and emphasizes the importance of using the returned zone, which is critical for correct invocation.

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 that the tool suggests a free, unclaimed subdomain label, and it specifies it is read-only and does not reserve the name. This is distinct from potential siblings like claim_subdomain or check_subdomain, though it does not explicitly name alternatives.

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?

It provides strong guidance on when to use (to prefill input) and explicitly instructs not to hard-code the zone, but does not explicitly say when not to use it or name alternatives. The guidance on taking the zone from 'base' is practical and actionable.

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

mailkite_test_webhookAInspect

Send a signed test event to the domain's webhook. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A3.6/5.0
Behavior4/5

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

With annotations already indicating a non-read-only, non-idempotent action, the description adds useful context: it sends a 'signed test event' (thus triggering a webhook delivery) and requires a management session token. This goes beyond the annotations without contradicting 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?

Two short sentences with no filler. The core action is front-loaded, and the auth requirement follows as a second sentence. 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?

For a simple one-parameter tool with no output schema, the description provides the essential info: what happens, where, and the auth precondition. It could mention return behavior or which id is required, but overall it is enough for an agent to invoke correctly in most 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 baseline is 3. The id parameter is minimally described as 'Path parameter `id`' and the tool description does not elaborate on what the id refers to (e.g., domain id or webhook id), but with full schema coverage the description is not obligated to compensate.

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 a specific action ('Send a signed test event') and the target resource ('the domain's webhook'), making the tool's purpose immediately obvious. It doesn't explicitly differentiate from siblings like verify_webhook or set_webhook, but the test-event language makes the distinction clear enough.

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

Usage Guidelines2/5

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

The description mentions a prerequisite ('Requires a management session token') but gives no guidance on when to use this tool instead of alternatives such as verify_webhook or set_webhook. No scenario, condition, or exclusion is described.

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

mailkite_update_app_passwordAInspect

Change what an app password covers — its label, address pattern, or protocols. The domain is fixed for the life of the password: repointing a live credential would hand its holder mail they were never granted, so create a new password instead. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
labelNoNew name shown in the dashboard.
addressNoNew local-part pattern — `*` (every address), `hello`, `support-*`, `*-agent`. No `@`: the domain can't change.
protocolsNoReplaces the existing set. Must be a non-empty subset of `["imap","api"]`.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description explains a non-obvious behavioral constraint: the domain is immutable for the life of the password, with a security rationale about handing over mail access. It also discloses the auth requirement. This adds meaningful context without contradicting the annotations.

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

Conciseness5/5

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

The description is three purposeful sentences: what the tool does, the critical domain limitation, and the auth requirement. It is front-loaded with the primary purpose and contains no filler or 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 full parameter schema, clear annotations, and the concise behavioral context, nothing essential is missing for an agent to select and invoke this tool correctly. The fixed-domain caveat and token requirement are exactly the contextual details that matter.

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 fully documents each parameter. The description adds a useful high-level summary of what can change but does not add syntax or semantic detail beyond the schema, which is the baseline case.

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 names a specific verb and resource — 'Change what an app password covers' — and enumerates the editable attributes: label, address pattern, or protocols. This clearly differentiates it from sibling operations like rotate or delete because it focuses on reconfiguring an existing password's scope.

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 gives explicit when-to-use guidance by saying the domain is fixed and, for domain changes, instructs 'create a new password instead.' It also states a prerequisite ('Requires a management session token'), which helps an agent decide whether it can use this tool in the current context.

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

mailkite_update_broadcastAInspect

Edit a draft broadcast (any of from/subject/audience/html/… ). Drafts only. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
fromNo
htmlNo
nameNo
textNo
previewNo
replyToNo
subjectNo
audienceNo
templateIdNo
footerAddressNo

TDQS

A3.9/5.0
Behavior4/5

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

With annotations already indicating readOnlyHint=false and destructiveHint=false, the description adds useful behavioral context: the tool is restricted to drafts and requires a management session token. The phrase 'any of ...' also implies partial updates are possible, which is beyond the schema alone. No contradictions with annotations found.

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 core purpose, then adds the key constraint ('Drafts only') and the auth requirement. Every element earns its place with no redundant phrasing.

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?

Despite the tool having 11 parameters, a nested audience object, and no output schema, the description gives no information about return values, update semantics beyond partial updates, or validation behavior. It is sufficient for deciding when to call the tool but not for fully understanding the effects and response of the call.

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

Parameters2/5

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

The schema has only 9% description coverage, and the description merely lists a few field names ('from/subject/audience/html/…') without explaining their meaning, formats, or constraints. It does not compensate for the lack of schema descriptions, especially for complex fields like 'audience' or optional parameters such as 'preview' and 'replyTo'.

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

Purpose5/5

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

The description clearly identifies the action ('Edit'), the resource ('draft broadcast'), and the editable fields ('from/subject/audience/html/…'). It also distinguishes itself from sibling broadcast tools by explicitly saying 'Drafts only,' so an agent can tell it apart from send/delete/get broadcast operations.

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: it applies only to draft broadcasts and requires a management session token. It does not explicitly name the alternative tools like create_broadcast or send_broadcast, but the 'Drafts only' constraint effectively communicates the boundary between this and other broadcast operations.

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

mailkite_update_listAInspect

Rename a contact list. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
nameYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds the useful authentication requirement ('Requires a management session token'), but does not disclose any potential side effects of renaming a list, such as impacts on references or subscribers.

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, purposeful sentences with the action stated first and the authentication prerequisite second. There is no verbose or redundant content; 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?

This is a simple two-parameter rename operation; the action statement plus the token requirement cover the essential context. While explicit details about the 'name' parameter and return value are absent, they are not critical for such a straightforward tool and the description is reasonably 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 only 50% (id described, name not). The description's verb 'rename' implies that 'name' is the new list name, which adds partial meaning not present in the schema. It does not explicitly describe either parameter, so the gap is only partially compensated.

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 ('Rename') and a specific resource ('a contact list'), which unambiguously states the tool's purpose. This distinguishes it from siblings like create_list, get_list, delete_list, and update_broadcast without needing to open their schemas.

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 action 'Rename a contact list' implies the usage context, and the token requirement adds a precondition. However, there is no explicit guidance about when to use this tool versus alternatives, nor any exclusions for similar update operations among the many siblings.

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

mailkite_update_sequenceAInspect

Edit a sequence. Changing the STEPS bumps its version and contacts already in flight keep walking the version they started on, so an edit can never make someone skip or repeat a step. Nothing else re-pins anybody — a rename, a pause, the input signature, and the trigger set are all editable while people are mid-flight. Archiving retires everyone in flight; pausing deliberately does not, so unpausing resumes rather than restarts. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
fromNo
nameNo
inputNoThe sequence's input signature: the shape every door must supply. A sequence is a function and this is how you declare its parameters — steps then read them as {{input.field}}, and a condition can branch on them. Omit it entirely for "anything goes"; you should not need a schema to write a two-step drip.
stepsNo
exitOnNoSequence-level exits, evaluated before EVERY step. `goal` completes the enrollment — they did the thing, stop chasing, which is the difference between a dunning sequence and harassment. `cancel` abandons it.
statusNo
reentryNo`once` (default) refuses to enroll a contact already in flight. `always` restarts them: the in-flight enrollment is canceled and a new one begins. `cooldown:<duration>` (e.g. "cooldown:30 days") re-enrolls only when that long has passed since their last enrollment.
triggersNoDoors into this sequence. A bare string is shorthand for { "event": "<name>" }. Replacing the set never bumps the sequence's version and never touches an enrollment in flight. A sequence with no triggers is enrolled only by naming it on a send or calling enroll — which is what "manual" used to mean.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only state readOnlyHint=false, which just says 'mutation'. The description goes well beyond that by disclosing version bump behavior for step changes, the fact that in-flight contacts continue on their original version, that no other edit re-pins anyone, the difference between archiving (retires everyone) and pausing (resumes later), and the API key requirement. This is exactly the behavioral context an agent needs to anticipate side effects, and it adds substantial value over the minimal annotation. 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 with zero fluff. The core purpose ('Edit a sequence') is front-loaded, and the subsequent sentence packs the most important behavioral consequences into a compact, scannable format. Every clause adds value – versioning, in-flight behavior, archive vs. pause distinction, and API key requirement. It is concise without being under-specified.

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 mutation tool with no output schema, this description covers the essential context: what editing does, side effects on in-flight enrollments, the distinction between pausing and archiving, and authentication requirements. It also clarifies which edits are version-bumping (steps) and which are not, which is critical for an agent to predict outcomes. Combined with the schema's parameter descriptions, nothing essential is missing for an agent to invoke the tool correctly.

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 56% (9 parameters, some with descriptions). The description adds meaningful semantic context for the 'steps' and 'status' parameters by explaining that changing steps bumps the version and that pausing (a status value) does not re-pin contacts. It also clarifies the effect of renaming and trigger set changes, which map to 'name' and 'triggers' parameters. However, some parameters like 'from' and 'reentry' are not addressed in the description; the schema already documents those, so the description compensates reasonably for the coverage gap.

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 opens with 'Edit a sequence' – a specific verb and resource – and immediately differentiates the action from siblings by detailing what changes bump the version (steps) versus what does not (rename, pause, input signature, trigger set). This gives an agent a clear, unambiguous understanding of what the tool does and how it differs from create/delete/start/stop operations on sequences.

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 strongly implies when to use this tool (to modify a sequence) and provides crucial context about the effects of editing while sequences are in flight, such as version bumping semantics and the distinction between pausing and archiving. It does not explicitly name alternative tools or state 'use this when you need to change X', but the behavioral details effectively guide an agent's decision process, especially the note that renaming or pausing does not re-pin contacts, which is exactly the kind of nuance an agent needs.

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

mailkite_update_triggerAInspect

Edit a trigger, or toggle enabled to switch the door off without deleting it. Either way, everyone already walking the sequence carries on. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.
eventNo
filterNo
enabledNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate a mutation (`readOnlyHint: false`), and the description adds a useful non-obvious behavior: existing sequence participants are unaffected by trigger edits. It also discloses the API key requirement, which helps the agent prepare the call correctly.

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?

Three short sentences deliver the core action, the key behavioral nuance, and the auth requirement with little waste. The 'door' metaphor is slightly informal but does not obscure the meaning.

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

Completeness3/5

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

The description covers the tool's purpose, the disable-without-delete behavior, and the impact on existing sequence walkers. However, with no output schema and no explanation of `event` or `filter`, the definition is not fully self-sufficient for an agent that needs to update those fields.

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

Parameters2/5

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

The schema only documents the `id` path parameter; coverage is 25%. The description explains the effect of `enabled` ('toggle `enabled` to switch the door off'), but it says nothing meaningful about `event` or `filter`, which remain opaque. An agent cannot reliably construct a payload beyond toggling `enabled`.

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 opens with a specific verb and resource ('Edit a trigger') and immediately clarifies a key distinction: toggling `enabled` switches the trigger off without deleting it. This differentiates the tool from its sibling `mailkite_delete_trigger` and makes the operation's intent unmistakable.

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 clear situational context: use this tool to modify a trigger or disable it without deletion. The 'rather than deleting it' phrasing implicitly contrasts with `delete_trigger`, but it does not explicitly mention alternatives like `stop_sequence` or when creation would be more appropriate.

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

mailkite_upload_attachmentAInspect

Upload a file to MailKite storage and get back a secure, time-limited URL. Reference the returned url as an attachment in send() ({ filename, url }) or link it inline in your HTML — instead of base64-inlining large files on every send. Give the file ONE of four ways: a local path (read and streamed as raw bytes by the CLI/SDK/local MCP), a remote url (MailKite fetches and re-hosts it), base64 content, or — over raw HTTP — the file bytes as the POST body with ?filename=. retentionDays (7/30/90/365, default 7) sets how long the file and URL live. Requires an API key (mk_live_…).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoA remote http(s) URL. MailKite fetches it and re-hosts the bytes under your account. Max 25 MB.
pathNoLocal filesystem path to the file. Read client-side by the CLI, SDKs, and the local MCP server, then uploaded as raw bytes. Not available on the hosted MCP (no filesystem).
contentNoThe file bytes, base64-encoded. The lowest-common-denominator fallback when you can't send a path, URL, or raw bytes.
filenameNoThe file's name, e.g. "invoice.pdf". Shown to recipients on download. Optional when it can be derived from `path` or `url`.
contentTypeNoMIME type, e.g. "application/pdf". Defaults to application/octet-stream (or is inferred from the file extension / fetched response).
retentionDaysNoHow long the file (and its signed URL) stays valid. One of 7, 30, 90, 365. Defaults to 7.

TDQS

A5/5.0
Behavior5/5

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

Annotations only indicate non-read-only/non-idempotent/non-destructive, but the description adds substantial behavioral context: the uploaded file is re-hosted, the URL is time-limited, retentionDays controls its lifetime, and an API key (mk_live_…) is required. It also clarifies transport-specific behavior (raw bytes vs base64). 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?

Five sentences, each earning its place: outcome, usage, input methods, retention, and auth. The most important information is front-loaded, and the dense parentheticals add needed detail without fluff.

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 an upload action with no output schema and no required parameters, the description gives the agent everything needed: how to supply the file (one of four ways), what is returned (a URL), how to use the return value, how long it lasts, and what credentials are required. The 'ONE of four ways' guidance prevents invalid calls with zero parameters.

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

Parameters5/5

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

Schema description coverage is 100%, but the description adds the crucial 'ONE of four ways' mutual-exclusivity constraint that the schema cannot express, plus the raw-HTTP body alternative that has no JSON parameter. It also clarifies retentionDays defaults and the returned URL's format for send().

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 opens with a specific verb and resource: 'Upload a file to MailKite storage and get back a secure, time-limited URL.' It also explains the returned URL's role in send() and contrasts with base64-inlining, making it distinct from sending tools like mailkite_send.

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?

It explicitly frames the tool as the preferred path over 'base64-inlining large files on every send', and gives concrete usage: reference the URL in send() or inline in HTML. It also details when each of the four file-input methods applies (local path for CLI/SDK/local MCP, remote URL for fetch-and-re-host, content as fallback, raw POST body over HTTP).

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

mailkite_verify_domainAInspect

Check DNS and update status. Requires a management session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPath parameter `id`.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already convey mutation and non-idempotency. The description adds that it checks DNS and updates statushol, and explicitly states an auth requirement (management session token), which goes beyond the annotation flags.

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

Conciseness5/5

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

Two short sentences, both substantive. Nonessential words are avoided and the most important info (DNS check, status update, token requirement) is front-loaded.

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 tool with one parameter and annotations, but does not explain what type of id is needed, what statuses exist, or what a caller should observe after verification. No output schema means a little more context would help.

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 the single id parameter. The description adds no parameter detail, but with full schema coverage this meets the baseline.

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 a concrete action ('Check DNS and update status') tied to the tool name verify_domain, so an agent understands what it does. It doesn't explicitly name the domain or differentiate it from close siblings (e.g. get_domain, check_domain_availability), so it is slightly short of a 5.

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?

It offers no guidance on when to use this tool versus alternatives, what state the domain should be in, or what to do after verification. The only prerequisite mentioned is a management session token.

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

mailkite_verify_webhookA
Read-only
Inspect

Verify the x-mailkite-signature header on an inbound webhook delivery. Runs entirely locally (HMAC-SHA256 over ${t}.${payload}) — no network call. Returns true only when the signature matches and the event is within the freshness window. Runs locally (no API call) — no credentials needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
secretYesYour webhook signing secret (from the dashboard).
payloadYesThe raw, unparsed webhook request body — the exact bytes you received.
signatureYesThe `x-mailkite-signature` header value, e.g. `t=1750000000000,v1=4f1a9c…`.
toleranceMsNoReject events whose timestamp is more than this many milliseconds old, to block replays. Defaults to 300000 (5 minutes). Pass 0 to disable the freshness check.

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only provide readOnlyHint=true, yet the description goes far beyond: it discloses the exact algorithm (HMAC-SHA256 over `${t}.${payload}`), the no-network execution, the no-credential requirement, and the return semantics (true only when signature matches and event is within freshness window). This is rich behavioral disclosure consistent with the readOnlyHint — 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.

Conciseness3/5

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

The description is front-loaded with the purpose, but it redundantly repeats the local/no-network point twice: 'Runs entirely locally (HMAC-SHA256...) — no network call' and later 'Runs locally (no API call) — no credentials needed.' This repetition of the same claim adds noise without new 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?

For a verification tool with no output schema, the description conveys the return semantics (returns true only on match + freshness) and the full algorithm, which is sufficient for correct calling. The toleranceMs default and disable behavior are covered in the schema. Only minor gaps exist, such as not explicitly stating the false return path, which is implied.

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 four parameters well. The description adds modest value by explaining how payload and signature combine in the HMAC computation and reinforcing toleranceMs's replay-blocking role, but it doesn't add much beyond what the schema already conveys. 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 states a specific verb (Verify) and resource (the x-mailkite-signature header on an inbound webhook delivery). It clearly distinguishes itself from the ~13 webhook-related siblings (set_webhook, test_webhook, delete_webhook) by focusing on signature verification rather than webhook configuration. An agent can tell this apart from siblings without opening the schema.

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

Usage Guidelines4/5

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

The description establishes strong usage context by emphasizing it runs entirely locally with no network call and no credentials needed, which differentiates it from the API-calling siblings. It also references the freshness window for replay protection. However, it doesn't name specific alternatives or explicit when-not-to-use conditions, leaving some inference to the agent.

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. 92 tool updatesv0.20.0
    • First observedmailkite_add_list_contacts
    • First observedmailkite_add_suppression
    • First observedmailkite_agent
    • First observedmailkite_cancel_enrollment
    • First observedmailkite_check_domain_availability
    • First observedmailkite_check_subdomain
    • First observedmailkite_claim_subdomain
    • First observedmailkite_create_app_password
    • First observedmailkite_create_broadcast
    • First observedmailkite_create_domain
    • First observedmailkite_create_list
    • First observedmailkite_create_realtime_token
    • First observedmailkite_create_route
    • First observedmailkite_create_scoped_key
    • First observedmailkite_create_sequence
    • First observedmailkite_create_template
    • First observedmailkite_create_trigger
    • First observedmailkite_delete_app_password
    • First observedmailkite_delete_broadcast
    • First observedmailkite_delete_domain
    • First observedmailkite_delete_list
    • First observedmailkite_delete_route
    • First observedmailkite_delete_scoped_key
    • First observedmailkite_delete_sequence
    • First observedmailkite_delete_tracking_webhook
    • First observedmailkite_delete_trigger
    • First observedmailkite_delete_webhook
    • First observedmailkite_delete_webhook_events
    • First observedmailkite_deliver_to_route
    • First observedmailkite_exchange_oauth_token
    • First observedmailkite_get_api_key
    • First observedmailkite_get_broadcast
    • First observedmailkite_get_domain
    • First observedmailkite_get_enrollment
    • First observedmailkite_get_list
    • First observedmailkite_get_mailbox_message_raw
    • First observedmailkite_get_message
    • First observedmailkite_get_sequence
    • First observedmailkite_get_template
    • First observedmailkite_get_usage
    • First observedmailkite_list_app_passwords
    • First observedmailkite_list_base_templates
    • First observedmailkite_list_broadcasts
    • First observedmailkite_list_delivery_attempts
    • First observedmailkite_list_domains
    • First observedmailkite_list_enrollment_runs
    • First observedmailkite_list_enrollments
    • First observedmailkite_list_event_names
    • First observedmailkite_list_events
    • First observedmailkite_list_list_contacts
    • First observedmailkite_list_lists
    • First observedmailkite_list_mailbox_messages
    • First observedmailkite_list_messages
    • First observedmailkite_list_route_candidates
    • First observedmailkite_list_routes
    • First observedmailkite_list_scoped_keys
    • First observedmailkite_list_sequences
    • First observedmailkite_list_suppressions
    • First observedmailkite_list_templates
    • First observedmailkite_list_triggers
    • First observedmailkite_me
    • First observedmailkite_register
    • First observedmailkite_register_domain
    • First observedmailkite_register_oauth_client
    • First observedmailkite_remove_list_contact
    • First observedmailkite_remove_suppression
    • First observedmailkite_retry_deliveries
    • First observedmailkite_retry_delivery
    • First observedmailkite_rotate_api_key
    • First observedmailkite_rotate_app_password
    • First observedmailkite_route
    • First observedmailkite_semantic_search
    • First observedmailkite_send
    • First observedmailkite_send_batch
    • First observedmailkite_send_broadcast
    • First observedmailkite_send_event
    • First observedmailkite_set_mailbox_message_flags
    • First observedmailkite_set_tracking_webhook
    • First observedmailkite_set_webhook
    • First observedmailkite_set_webhook_events
    • First observedmailkite_start_sequence
    • First observedmailkite_stop_sequence
    • First observedmailkite_suggest_subdomain
    • First observedmailkite_test_webhook
    • First observedmailkite_update_app_password
    • First observedmailkite_update_broadcast
    • First observedmailkite_update_list
    • First observedmailkite_update_sequence
    • First observedmailkite_update_trigger
    • First observedmailkite_upload_attachment
    • First observedmailkite_verify_domain
    • First observedmailkite_verify_webhook

TDQS

A3.6/5.0

Scored across 92 tools

Disambiguation4/5

Most tools target distinct resources and actions with detailed descriptions that prevent confusion. A few overlapping pairs exist (e.g., send_event vs start_sequence, agent vs route), but the descriptions explicitly clarify when to use each.

Naming Consistency4/5

The vast majority follow a consistent `mailkite_verb_noun` pattern (list_domains, create_trigger, delete_broadcast). A few outliers like `agent`, `route`, `me`, and `semantic_search` break the convention, but they are rare and the pattern is otherwise strong.

Tool Count2/5

At 92 tools, the surface is far beyond the typical 3–15 range and even exceeds the 25+ threshold for 'too many'. While the broad scope of a full email platform justifies many endpoints, this count still overwhelms an agent's selection process and feels excessive.

Completeness3/5

The toolset covers a wide range of email functionality (sending, sequences, templates, domains, webhooks, lists, broadcasts, suppressions, keys). However, notable gaps exist: templates lack update/delete, routes have no update or get, and there is no standalone contact management beyond list membership.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    C
    quality
    C
    maintenance
    Gives on-the-fly inboxes to AI agents. Agents / LLM's can send, receive, and take action in isolated inboxes. Built for AI unlike Gmail. Check us out at agentmail.to
    10
    99
    -
  • A
    license
    A
    quality
    A
    maintenance
    Real email and SMS for AI agents. Run a local mail server with disposable inboxes — agents send and receive real email, fetch verification codes, and drive a real inbox without going through any third-party email API.
    100
    221
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Open-source, self-hosted Inbox-as-a-Service API for AI agents. It enables agents to manage email inboxes, send/receive emails, search messages, and wait for replies via REST or MCP.
    28
    Apache 2.0