Skip to main content
Glama

build_parked_domain_records

Read-onlyIdempotent

Build a three-record hardening pack (Null MX, SPF hard-fail, DMARC reject) to stop spoofing for domains that send no email. Requires owner confirmation that the domain is mail-free.

Instructions

Use this when the user asks how to protect a domain that sends no email from being spoofed. Build the three-record hardening pack that makes a NON-SENDING domain unusable for spoofing: a Null MX, a hard-fail SPF record, and a p=reject; np=reject DMARC record. For parked, redirect and brand-defensive domains only — NEVER for a domain that sends any mail, including transactional or one legacy system. Do NOT set confirm_no_mail on your own judgment or because a scan looked quiet: only the human who owns the domain can confirm it sends nothing, so ask them first. That flag unlocks the question, not the answer — the server re-checks DNS itself (existence, MX, SPF, DKIM selectors) and returns records: null with a rationale when it finds evidence of mail; relay that rationale rather than retrying. A lookup failure is reported as a failure, never as a pack. Publishing is the human's decision: present the records verbatim, in the order given, and let them approve each one.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain to check, e.g. example.com. Bare registrable names and subdomains both work; scheme, path or port do not belong here. Unicode names are accepted and normalized to punycode.
rua_emailNoMailbox to receive DMARC aggregate (RUA) reports, as a plain address like dmarc@example.com. Strongly recommended: without it nobody can see who sends as the domain.
confirm_no_mailYesMust be true, and only the HUMAN who owns the domain may decide it: it records their confirmation that this domain sends no email at all. Never set it on your own judgment or because a scan looked quiet — ask them. It unlocks the question only; the server independently re-checks DNS for evidence of mail and refuses when it finds any.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.3.0

TDQS

A4.7/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: the server independently re-checks DNS and returns null-with-rationale on evidence of mail, lookup failures are reported as failures never as a pack, and publishing waits on human approval of each record. The readOnlyHint is consistent because the tool only generates records for review rather than publishing 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?

Purpose and scope are front-loaded, and each subsequent sentence carries a distinct behavioral constraint: human confirmation, server re-check, failure semantics, and the approval flow. The repeated 'sends no email' phrasing reinforces a critical safety boundary rather than padding, so the length is justified by the tool's complexity.

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

Completeness5/5

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

Despite having no output schema, the description fully specifies return semantics: the verbatim three-record pack, null with rationale when DNS evidence of mail exists, and failure on lookup failure. Combined with the schema's complete parameter coverage and the explicit human-approval flow, nothing an agent needs to invoke and handle the tool correctly 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 description coverage is 100%, so all three parameters are already documented thoroughly in the input schema; the description adds no new parameter-level detail or syntax. It does reinforce confirm_no_mail's meaning ('unlocks the question, not the answer'), but that mirrors the schema, keeping this at 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?

States a specific verb and resource with named deliverables: 'Build the three-record hardening pack... a Null MX, a hard-fail SPF record, and a p=reject; np=reject DMARC record.' The scope ('For parked, redirect and brand-defensive domains only') clearly distinguishes it from the check/audit/validate siblings and from build_dmarc_upgrade, which serves sending domains.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('Use this when the user asks how to protect a domain that sends no email from being spoofed') and a hard exclusion ('NEVER for a domain that sends any mail, including transactional or one legacy system'). It also states the precondition that only the human domain owner may set confirm_no_mail, so an agent knows to ask before invoking.

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