Skip to main content
Glama

build_dmarc_upgrade

Generate a validated DMARC upgrade record (p=reject, np=reject) only when a scan confirms alignment is safe; otherwise return null with rationale. Preserve existing np tags; require human approval.

Instructions

Return a validated DMARC enforcement-upgrade record for a domain. The alignment gate (whether p=reject is safe) is derived server-side from a scan — a caller can never assert alignment. record is null when there is no honest upgrade to offer (the domain does not exist; the DMARC lookup itself hit NXDOMAIN while the existence probe did not resolve; the DMARC lookup temp-failed; or the domain already applies a policy at least as strong as this scan justifies): relay rationale and never compose a record to fill the gap. A returned record also carries np=reject (the DMARCbis tag covering non-existent subdomains, which can have no legitimate aligned mail) unless the domain already publishes an np tag, which is preserved as-is. Present a returned record verbatim; a human must approve before publishing.

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.
Behavior5/5

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

The description goes beyond the annotations by disclosing key behaviors: the alignment gate is server-side and cannot be asserted by the caller; the full set of null-record conditions (domain not found, NXDOMAIN, temp-fail, already strong policy); the np=reject behavior unless an existing np tag is preserved; and the instruction to present the record verbatim and require human approval. This provides rich behavioral context that the annotations (readOnlyHint, openWorldHint, idempotentHint) do not cover, without 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 a single dense paragraph, but every sentence carries critical information: purpose, server-side derivation, null conditions, np tag handling, and human approval. It is front-loaded with the main purpose. While not broken into bullets, it is concise for the complexity and avoids unnecessary 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?

Given the tool has only one parameter and no output schema, the description does a good job explaining return behavior: when 'record' is null versus present, what the 'rationale' is for, and the returned record's np tag. It mentions the need to 'relay rationale' and 'present a returned record verbatim,' which describes the expected output without an explicit output schema. It does not fully specify the response structure (e.g., whether the response is a JSON object with both 'record' and 'rationale'), but the guidance is sufficient for a high-level understanding.

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

Parameters3/5

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

The input schema provides 100% coverage for the single 'domain' parameter, including normalization to punycode and acceptable formats. The description itself does not add additional parameter-level details beyond what the schema already states. With high schema coverage, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific action and resource: 'Return a validated DMARC enforcement-upgrade record for a domain.' This clearly distinguishes it from sibling tools like generate_dmarc_record (which likely creates a fresh record) and validate_dmarc_record (which validates existing records). The focus on 'enforcement-upgrade' and 'derived server-side from a scan' makes the purpose precise.

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 implies when the tool is appropriate: for proposing a DMARC enforcement upgrade based on a server-side scan. It details the null record conditions, which tells the caller when no upgrade is available. However, it does not explicitly name alternatives or contrast with sibling tools, such as 'use generate_dmarc_record for a new record from scratch.' This is a clear usage context but lacks explicit exclusions.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dnsdoctor/claude-plugin'

If you have feedback or need assistance with the MCP directory API, please join our Discord server