Groundmail
Server Details
Send transactional email and manage domains, templates, webhooks and suppressions with Groundmail.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Groundmail/groundmail-mcp
- GitHub Stars
- 0
- Server Listing
- groundmail-mcp
TDQS
Scored across 19 tools
Each tool targets a unique resource-action pair (domain, template, webhook, suppression, email) with no two tools doing the same thing. Sequential domain steps (create/apply/verify) are clearly distinguished by description.
All names use consistent snake_case with a verb_noun structure (list_*, get_*, create_*, delete_*, etc.). Minor variation like send_test_webhook_event still fits the pattern.
19 tools is slightly above the ideal 3-15 range but justified by the breadth of the email platform (domains, templates, webhooks, suppressions, sends, deliverability). Each tool earns its place, though a few could be consolidated.
Core lifecycle for templates and domains lacks update and delete operations, and webhooks/suppressions have no get or update. These gaps will force workarounds for common tasks like editing a draft template or removing a domain.
Available Tools
19 toolsadd_suppressionAdd suppressionCIdempotentInspect
Add an address to the suppression list.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address to stop sending to | ||
| reason | No | Optional note on why the address is suppressed |
Output Schema
| Name | Required | Description |
|---|---|---|
| suppression | Yes | The suppression entry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, idempotent, non-destructive write, so the safety profile is covered. The description adds nothing beyond that: it does not explain the effect (that future sends to this address are blocked), whether the change is reversible, or any auth/rate considerations. With annotations carrying the safety load, the description is thin but not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. It is efficient, though arguably so terse that it omits useful context for a mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a write tool the description omits the operational consequence of suppression (blocking future sends) and the existence of the inverse operation, which an agent would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (email, reason) are already fully documented in the schema, including that reason is optional. The description adds no syntax, format, or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (add) and resource (suppression list), and the name plus sibling set (list_suppressions, remove_suppression) makes the direction of the operation unambiguous. It does not explicitly name a sibling or contrast with alternatives, but the purpose is immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus remove_suppression or list_suppressions, no mention of prerequisites, and no indication of when suppression is appropriate (e.g., hard bounces, complaints, manual opt-out). The agent must infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_domain_dnsApply domain DNS recordsBDestructiveIdempotentInspect
Apply Groundmail DNS records for a domain. Cloudflare and GoDaddy can use credentials stored in the dashboard; GoDaddy also accepts one-time credentials on the request.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name or id of a domain already added to this account (example.com) | |
| provider | Yes | DNS provider that hosts the domain | |
| credentials | No | Optional inline registrar credentials (GoDaddy api key/secret) |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | Domain the records belong to |
| records | No | DNS records to publish for the domain |
| results | Yes | Outcome for each record |
| provider | Yes | DNS provider the records were written to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the risky profile is covered structurally. The description adds genuinely useful behavior beyond that, namely that Cloudflare/GoDaddy can use dashboard-stored credentials while GoDaddy additionally accepts one-time inline credentials. However, it does not say that applying records overwrites/alters existing DNS configuration, nor does it mention the Vercel provider path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and the credential nuance second. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the annotations carry the safety profile. Still, for a destructive, open-world mutation the description omits the key operational context: what existing records are replaced, whether the domain must already be added, and the Vercel case. It is adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents domain, provider, and credentials, which sets the baseline at 3. The description adds only one extra nuance, that the credentials object is relevant to GoDaddy in particular; it says nothing about the vercel enum member or the accepted id-vs-name form of domain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: applying Groundmail DNS records to a domain. It is distinguishable from siblings like create_domain and verify_domain in broad strokes, but never explicitly contrasts itself with verify_domain, so an agent must infer which of the two DNS-related tools to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what it does but never states when to invoke it versus verify_domain or after which prerequisite step. The note about where credentials can come from is contextual detail, not usage guidance, and no exclusions or preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_domainCreate domainAInspect
Add a sending domain. DNS must still be applied and verified before production sends.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Domain name (example.com) | |
| inbound_enabled | No | Enable inbound receiving on this domain |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | The domain |
| records | Yes | DNS records to publish for the domain |
| inbound_note | No | Guidance about adding the inbound MX records |
| inbound_records | No | MX records to publish when inbound receiving is enabled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description's main added value is the workflow constraint that the domain is not production-ready until DNS is applied and verified. It does not address what happens on duplicate domain creation or other mutation side effects, so it adds modest 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the action front-loaded and the critical DNS caveat immediately following. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the core action plus the key operational caveat. It could say more about duplicate-handling or the verify/apply sequence, but it is essentially complete for a simple two-parameter creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both name and inbound_enabled documented in the schema itself. The description adds no parameter-level meaning (e.g., it never mentions inbound_enabled or its effect), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Add a sending domain" gives a specific verb plus resource and distinguishes creation from siblings like list_domains and verify_domain. It stops short of explicitly naming those siblings or clarifying the sending-vs-inbound scope trade-off in any detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence "DNS must still be applied and verified before production sends" implies the follow-up workflow (apply_domain_dns, verify_domain), which is useful implied guidance. However, it never explicitly names those tools or states when an agent should choose this over alternatives, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_templateCreate templateBInspect
Create a draft email template (html or blocks format).
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | HTML body | |
| name | Yes | Template name | |
| text | No | Plain-text body | |
| alias | No | Optional short alias to reference the template by instead of its id | |
| format | No | Template format (html or blocks) | |
| subject | Yes | Subject line, may contain {{variables}} |
Output Schema
| Name | Required | Description |
|---|---|---|
| template | Yes | The template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful nuance that the result is a draft (not sendable until published) and that html/blocks formats are accepted, but it says nothing about auth requirements, uniqueness constraints, or whether repeated calls duplicate templates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action, the created artifact and its state with zero filler. It is tightly written, though arguably too terse for a six-parameter creation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the safety profile. What remains missing is the draft-to-live lifecycle and any constraints on name/alias, leaving the description only minimally adequate for a creation endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema. The description only echoes the html/blocks format choice, adding no syntax, pairing, or default guidance beyond structured data; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Create a draft email template' with the supported formats named. The word 'draft' implicitly separates it from publish_template, but the sibling is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no stated when-to-use, prerequisite, or alternative. An agent must infer from 'draft' that publish_template exists to make a template live, and nothing tells it whether a name must be unique or whether alias collisions matter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookCreate webhookAInspect
Create a webhook endpoint. Returns the endpoint plus a signing secret (shown once).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | HTTPS URL that receives events | |
| events | No | Optional event types (defaults apply when omitted) |
Output Schema
| Name | Required | Description |
|---|---|---|
| secret | Yes | Signing secret for verifying deliveries. Shown only once, so store it |
| webhook | Yes | The created webhook endpoint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), and the description adds genuinely non-obvious behavior: a signing secret is returned and 'shown once', which materially affects how an agent must handle the response. It does not cover auth requirements, but it exceeds what the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the one-shot secret disclosure is placed immediately after the action statement. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations already cover the mutation/safety profile; the description still usefully flags the one-time secret. The remaining gap is usage context — when creating a webhook is appropriate and what must be true beforehand.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both url and events documented in the schema, so the baseline is 3. The description adds no syntax, defaults, or format detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a webhook endpoint') that an agent can easily distinguish from delete_webhook and list_webhooks. It stops short of explicitly naming an alternative or scope boundary, so it is clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., verified domain or reachable HTTPS endpoint), and no mention of how this differs from send_test_webhook_event. The agent must infer all routing from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookDelete webhookCDestructiveIdempotentInspect
Delete a webhook endpoint by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook id (wh_…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | True when the request completed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that — it does not say whether deletion is permanent, what happens to in-flight deliveries, or whether re-creating the id is possible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. However, for a destructive operation the extreme brevity arguably omits warranted caveats rather than representing true economy of expression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and a one-parameter delete is structurally simple. What is missing is any statement of consequence — that deletion is irreversible and stops webhook deliveries — which matters for a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented with its 'wh_…' format, so the schema carries the full burden. The description's 'by id' phrase adds no syntax or format detail beyond what the schema already provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a webhook endpoint') plus the lookup key ('by id'), which is unambiguous and clearly distinct from siblings like create_webhook and list_webhooks. It stops short of explicitly contrasting itself with those siblings, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to delete versus simply disabling a webhook, no warning that this halts event delivery, and no mention of any alternative tool. The reader must infer all usage context from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deliverabilityGet deliverability metricsARead-onlyIdempotentInspect
Fetch best-effort deliverability metrics for recent sends (7d or 30d window).
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | Time window to summarize (default 30d) |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | Caveats about how the metrics were measured |
| window | Yes | Window covered: 7d or 30d |
| summary | Yes | Totals across all domains |
| by_domain | No | Metrics for each sending domain |
| generated_at | No | When the report was generated (ISO 8601) |
| window_start | No | Start of the window (ISO 8601) |
| top_bounce_reasons | No | Most common bounce reasons |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds a genuinely useful behavioral caveat — 'best-effort' signals the data may be approximate or incomplete — plus the window scoping. It stops short of noting freshness, auth scope, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the verb and resource front-loaded and the window constraint appended. No filler, no restating of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and one optional parameter keeps the surface small. The description covers purpose and scope adequately; only freshness/latency expectations or empty-data behavior are unaddressed, which is a minor gap for a tool this simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single enum parameter's default (30d) is already documented in the schema. The description restates the 7d/30d options without adding format or behavior detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) and resource (deliverability metrics) with the scope of recent sends. It distinguishes itself from siblings, none of which report metrics, though it never names an alternative. The 'best-effort' hedge is informative but slightly muddies the promise of what is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage — pull deliverability for recent sends — but gives no when-to-use trigger, no when-not, and no prerequisite or alternative. Since no sibling covers metrics, the agent can infer this is the only option, which keeps it at minimum viable rather than absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_emailGet emailBRead-onlyIdempotentInspect
Get a single email by public id (msg_…).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Email id (msg_…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| Yes | The email |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety and side-effect profile is fully covered by structured data. The description adds nothing beyond that (no error behavior, no auth or rate-limit notes), but it also does not contradict the annotations, so a baseline 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that front-loads the verb and resource with zero filler. Nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with a full annotation set and an output schema, the definition is essentially complete; the return shape need not be explained. Only the absence of routing guidance against list_emails keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single parameter already documented as 'Email id (msg_…)'. The description restates the same format rather than adding new meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get a single email') plus the identifier format, and the word 'single' implicitly contrasts with the list_emails sibling. It does not name an alternative explicitly, so it stops just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus list_emails or a search-style sibling, and no prerequisites or exclusions are stated. The usage is only inferable from the fact that it fetches one record by id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateGet templateBRead-onlyIdempotentInspect
Get a template by id or alias.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Template id (tpl_…) | |
| alias | No | Published alias (alternative to id) |
Output Schema
| Name | Required | Description |
|---|---|---|
| template | Yes | The template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds no behavioral context of its own — no note on what happens with an unknown id/alias, unpublished templates, or visibility scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eight-word sentence with the action and identifiers front-loaded; nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter read tool with rich annotations, a complete schema, and an output schema defining the return value, the description covers everything an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (id, alias) are documented with formats (tpl_…, published alias). The description merely restates that either key works, adding nothing the schema does not already carry; the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a template') plus the two acceptable lookup keys (id or alias), so the operation is unambiguous. It does not, however, distinguish itself from siblings like list_templates or create_template beyond the obvious verb difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus list_templates (enumerate) or publish_template (mutate). 'By id or alias' hints at acceptable identifiers but gives no context, prerequisites, or exclusions for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domainsList domainsBRead-onlyIdempotentInspect
List sending domains for this account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (1–100) | |
| cursor | No | Opaque cursor for the next page |
Output Schema
| Name | Required | Description |
|---|---|---|
| domains | Yes | Sending domains on this page |
| has_more | No | True when another page of results is available |
| next_cursor | No | Cursor to pass as `cursor` to fetch the next page; null on the last page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds only the account-scoping fact; it says nothing about pagination behavior, default/maximum page size, or result ordering, which would be the value-add beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the resource and scope land immediately. Nothing here needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and annotations cover safety, leaving the description minimal but not wrong. Still, for a paginated list tool it omits any note about page-size defaults or how cursor paging works, leaving the agent to derive everything from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two params (limit, cursor), each already documented in the schema. The description adds no meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List sending domains') plus the scope ('for this account'), so the agent knows exactly what comes back. It does not, however, distinguish itself from neighbors like create_domain or verify_domain beyond the obvious verb difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of alternatives, no prerequisites or ordering relative to verify_domain/create_domain. The agent must infer that this is the read path for enumerating domains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emailsList emailsBRead-onlyIdempotentInspect
List recent emails sent from this account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (1–100) | |
| cursor | No | Opaque cursor for the next page |
Output Schema
| Name | Required | Description |
|---|---|---|
| emails | Yes | Emails on this page, newest first |
| has_more | No | True when another page of results is available |
| next_cursor | No | Cursor to pass as `cursor` to fetch the next page; null on the last page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds the useful scoping fact that it lists only sent mail from this account, but discloses nothing about pagination flow or result ordering that would help an agent drive the cursor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the scoping clause is placed after the core verb-resource pair. It is efficient, though arguably under-specified rather than genuinely tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be explained, and annotations carry the safety profile. The remaining gap is that 'recent' and any default paging behavior are undefined, but the structured fields cover most of what an agent needs to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and cursor are already documented in the schema, and the description adds nothing about page size or cursor behavior. With 2 parameters and full schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (List) and resource (emails) and adds scope ('sent from this account'), which distinguishes it from the sibling get_email at a high level. However, it offers no explicit differentiation from related siblings like get_email or the other list_* tools, and 'recent' is an undefined qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as get_email for a specific message. Usage is only loosely implied by 'recent emails sent from this account'; no exclusions, prerequisites, or routing guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_suppressionsList suppressionsBRead-onlyIdempotentInspect
List suppressed recipient addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Optional filter by email | ||
| limit | No | Page size (1–100) | |
| cursor | No | Opaque cursor for the next page |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Suppressed addresses on this page |
| has_more | No | True when another page of results is available |
| next_cursor | No | Cursor to pass as `cursor` to fetch the next page; null on the last page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is fully covered without the description. The sentence adds only a hint about the listed resource; it says nothing about pagination limits, ordering, or result volumes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is appropriately sized for what it attempts to say.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, annotations carry the safety profile, and all three parameters are documented at 100% coverage. The only missing piece is usage routing against the add/remove siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so email, limit and cursor are already documented in the schema. The description adds no syntax, format, or filter semantics beyond what the schema provides, which is the baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) plus resource (suppressed recipient addresses), so the agent immediately knows what the tool returns. It does not explicitly distinguish from siblings like add_suppression/remove_suppression, but the read-only listing behavior is unambiguous from the name and sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use, when-not-to-use, or alternative guidance. It never notes that add_suppression/remove_suppression are the mutation counterparts, nor does it explain that email/limit/cursor enable filtering or paging.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesList templatesCRead-onlyIdempotentInspect
List email templates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (1–100) | |
| cursor | No | Opaque cursor for the next page | |
| status | No | Optional filter by template status |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Templates on this page |
| has_more | No | True when another page of results is available |
| next_cursor | No | Cursor to pass as `cursor` to fetch the next page; null on the last page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so safety is covered structurally. The description adds nothing beyond that shell — no pagination behavior, no result ordering, no clarification of whether the status filter is inclusive. Minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no padding or waste, and it is front-loaded. But its brevity reflects under-specification rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described, and the annotations carry the safety profile. What remains missing is any indication of pagination expectations, default limits, or how the list is ordered, which for a paginated list tool would help an agent call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: limit, cursor, and the status enum are all self-documenting, so the baseline of 3 applies. The description contributes no additional parameter meaning, such as default page size or cursor expiry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (list) and resource (email templates), so the basic purpose is inferable. However it is essentially a restatement of the name/title with no added scope, and it does not distinguish itself from the sibling get_template, which an agent must infer is the single-item counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the alternatives (get_template for one template), and no stated conditions. The agent gets no routing signal beyond the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksList webhooksBRead-onlyIdempotentInspect
List webhook endpoints for this account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (1–100) | |
| cursor | No | Opaque cursor for the next page |
Output Schema
| Name | Required | Description |
|---|---|---|
| has_more | No | True when another page of results is available |
| webhooks | Yes | Webhook endpoints on this page |
| next_cursor | No | Cursor to pass as `cursor` to fetch the next page; null on the last page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is fully covered by structured data. The description adds only the 'for this account' scoping detail and says nothing about pagination or result ordering; with annotations carrying the safety profile, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler. It is appropriately sized for a simple list tool, though it is sparse enough that it verges on under-specification rather than tight concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter description coverage, the description does not need to explain return values or param formats. It covers scope, and the low-complexity, read-only nature of the tool means nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (limit and cursor are both documented in-schema), so the baseline is 3. The description adds no syntax, default, or pagination semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List webhook endpoints') plus an account scope, which is clearly distinct from create_webhook/delete_webhook by name alone. It stops short of explicitly differentiating itself from the other list_* siblings, but 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives, no prerequisites, and no note about pagination workflow. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_templatePublish templateAInspect
Publish a template, snapshotting an immutable version for sends.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Template id (tpl_…) | |
| alias | No | Template alias (alternative to id) |
Output Schema
| Name | Required | Description |
|---|---|---|
| template | Yes | The template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description is not the sole source. It usefully adds that publishing creates an immutable snapshot, but it does not clarify what happens on republish or whether publishing is reversible — relevant given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action and its core consequence with no filler words. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the description conveys the key semantic that a published version is immutable. It is nearly complete, missing only guidance on republish behavior and reversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (id and alias) are already documented, including alias as 'alternative to id'. The description adds no parameter-specific meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (publish) and resource (template), and adds meaningful scope: it snapshots an immutable version for sends. It is distinguishable from create_template and get_template by verb, though it never explicitly names how it relates to those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for sends' implies the context in which publishing matters (making a sendable version), but there is no explicit when-to-use directive, no prerequisites, and no named alternative. Usage is only inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_suppressionRemove suppressionBDestructiveIdempotentInspect
Remove a suppression by id or email address.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Suppression id | |
| No | Email address (alternative to id) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | True when the request completed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds nothing beyond that: it doesn't say whether this is a hard or soft removal, what happens if the id/email isn't found, or whether supplying both identifiers errors. Note the sibling delete_webhook uses "delete" while this uses "remove", and the distinction is never clarified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, with zero filler. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations carry the safety profile. However, for a destructive operation with zero required parameters, the missing details about failure behavior and identifier precedence leave a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are fully documented there, so the baseline is 3. The description only restates "by id or email address" without adding format, precedence, or mutual-exclusivity rules (e.g., what happens if both are passed).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Remove a suppression") and names the two identifier modes. Sibling tools add_suppression/list_suppressions make the family obvious, but the description itself does no explicit differentiation work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus alternatives, no prerequisites, and no warning about irreversibility that would help an agent decide to call it. Only the identifier options hint at usage, which is really parameter content rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailSend emailAInspect
Send a transactional email via Groundmail. Provide subject + html/text, or a published template_id / template_alias with optional variables.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address | |
| from | Yes | Sender address (must match a verified domain or sandbox sender) | |
| html | No | HTML body. Do not combine with template_id or template_alias | |
| text | No | Plain-text body. Do not combine with template_id or template_alias | |
| subject | No | Subject line. Optional when using a published template | |
| reply_to | No | Address that replies should go to | |
| variables | No | Template variables when using template_id or template_alias | |
| template_id | No | Published template UUID | |
| template_alias | No | Published template alias |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Email id (msg_…) |
| status | Yes | Status after the request, for example queued or scheduled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true and destructiveHint=false, so the agent knows this is a non-idempotent external write. The description confirms the transactional nature and the template/body exclusivity, but adds nothing about delivery consequences, auth requirements beyond the schema's 'verified domain' note, or rate limits. Adequate but thin on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler. The core action is front-loaded, and the second sentence packs the mutually exclusive parameter paths efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the annotations carry the safety profile. The description covers both sending modes for a 9-parameter tool; only minor gaps remain (reply_to unmentioned, no error/failure behavior), so it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (to, from, html, text, subject, reply_to, variables, template_id, template_alias) is already documented in-schema. The description restates the template-vs-body split and notes variables are optional, but adds no syntax, format, or constraint detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Send a transactional email via Groundmail'), plus the channel/protocol context. No sibling tool sends email (create_template, send_test_webhook_event are adjacent but distinct), so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the two valid invocation modes: 'subject + html/text, or a published template_id / template_alias with optional variables.' This tells the agent which parameter path to choose, though it omits any when-not guidance (e.g. when to prefer a template over raw body, or prerequisites like verified sender domains).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_test_webhook_eventSend test webhook eventAInspect
Simulate a webhook event (POST /emails/test) for CI or local webhook testing. Optionally deliver to subscribed endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| event | Yes | Webhook event type to simulate | |
| deliver | No | When true (default), enqueue delivery to account webhooks | |
| email_id | No | Optional existing email id (msg_…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | True when the simulated event was built |
| payload | No | The event payload that was (or would be) delivered |
| delivered | Yes | True when delivery to subscribed endpoints was started |
| deliveries | No | Per-endpoint results when delivery ran synchronously; empty otherwise |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is known. The description adds a meaningful side-effect nuance — that the call can optionally push real deliveries to subscribed endpoints — though it doesn't spell out that this consumes real outbound traffic or appears in event logs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and the endpoint, with zero filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Purpose, intended context, and the optional-delivery side effect are all covered, and an output schema plus rich annotations carry the remaining burden. Only minor gaps (rate limits, visibility of simulated events in logs) remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters including the event enum and the deliver default are already documented. The phrase 'optionally deliver to subscribed endpoints' paraphrases the deliver flag without adding syntax or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (simulate) and resource (webhook event) plus the underlying endpoint POST /emails/test, which distinguishes it unambiguously from send_email and create_webhook among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the intended contexts explicitly (CI pipelines, local webhook testing), which is clear when-to-use guidance. It does not name an alternative or state a when-not 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.
verify_domainVerify domainAIdempotentInspect
Verify DNS for a sending domain after records are applied.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name or id to check (example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
| checks | No | Result of each DNS check |
| domain | Yes | The domain |
| records | No | DNS records to publish for the domain |
| verified | Yes | True when the domain passed verification |
| inbound_error | No | Inbound setup error, if any |
| signing_ready | No | True when outgoing mail can be signed for this domain |
| inbound_pending | No | True while inbound setup is still in progress |
| inbound_configured | No | True when inbound receiving is set up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, covering the safety profile. The description adds that this is a DNS check performed post-setup, but says nothing about propagation delays, retry/polling expectations, or what a failure state implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the action, subject, and precondition front-loaded; no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the single parameter is fully documented. The only mild gap is the absence of guidance on timing/retry for a verification call, but the definition is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single parameter, so the schema already documents 'domain' with an example. The description adds no format or syntax detail beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (verify) and resource (DNS for a sending domain), and the phrase 'after records are applied' implicitly ties it to the DNS-record setup flow. It is distinguishable from apply_domain_dns and create_domain, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"after records are applied" gives clear sequencing context that tells the agent when this tool is appropriate. It stops short of naming alternatives or stating when not to use it, so it is clear context without exclusions.
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.
19 tool updates
- First observed
add_suppression - First observed
apply_domain_dns - First observed
create_domain - First observed
create_template - First observed
create_webhook - First observed
delete_webhook - First observed
get_deliverability - First observed
get_email - First observed
get_template - First observed
list_domains - First observed
list_emails - First observed
list_suppressions - First observed
list_templates - First observed
list_webhooks - First observed
publish_template - First observed
remove_suppression - First observed
send_email - First observed
send_test_webhook_event - First observed
verify_domain
Publisher details
- Operator
- Groundmail · Publisher source
- Operator website
- https://groundmail.dev/ · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://docs.groundmail.dev/ · Publisher source
- Trust center
- Not available
- Restrictions
- Not available
Related MCP Connectors
Send transactional email over a verified domain — templates, attachments, custom headers.
Send and receive email from your verified domains; manage domains, templates and deliverability.
Send transactional email, run campaigns, manage contacts and automations, audit deliverability.
- AhaSendOAuthcom.ahasend
Send email, check deliverability, set up domains, and run templates, contacts and campaigns.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI agents to send transactional email, authenticate sending domains, track delivery, and diagnose deliverability issues programmatically.1333 npmMIT
- AlicenseAqualityDmaintenanceEnables sending transactional email and monitoring delivery via the Postmark API, with tools for email, templates, bounces, messages, stats, and suppressions, including a read-only mode.28MIT
- AlicenseAqualityAmaintenanceMailKite offers email sending and receiving for agents at your domain or free inboxes Create inboxes for your agent Send emails from your agent Receive emails to your webhook Receive emails to your agent9273 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables sending transactional email and campaigns, managing contacts and templates, and reading delivery reports and wallet usage from any MCP client.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.