Skip to main content
Glama

Scan Domain

scan_domain

Force a fresh scan of a domain's SPF, DKIM, DMARC, MX, DNS hardening, expiry and blacklist status, returning each check with a fix record where applyable.

Instructions

Use this when the user asks to check, audit, diagnose or troubleshoot SPF, DKIM, DMARC, email authentication, email deliverability DNS, why their mail lands in spam, MX, DNS health, blacklist status, or domain/SSL expiry for a domain, or wants to fix what a scan finds (fix records for DMARC and DNS; SPF is diagnose-only) — or whenever a conversation turns to a specific domain's email or DNS setup. It needs the user's real domain: if they have not said which domain, ask them first; never scan a placeholder such as example.com. Force a fresh scan of a domain and return its full report: seven deterministic checks — SPF, DKIM, DMARC, MX, DNS hardening, domain/TLS expiry and blacklist listing — each with a status (pass/warn/fail/info/temperror), the observed record, and a fixengine-generated fix_record where one exists. It also carries sender_requirements: the rules Gmail, Yahoo, Microsoft Outlook and Apple publish for senders, each with what DNS shows (pass, fail or unknown; email_test where only a real message can show it; not_visible where only the provider can), not a compliance verdict. Explanations are cache-first. A repeat scan of the same domain within the dedup window (about a minute) reuses the stored report rather than re-reading DNS, so scanned_at may predate a DNS change you just made — when you are verifying an edit, check scanned_at and call again after the window rather than treating an unchanged report as the new state. Use this when you need current state; use get_report when a recent cached answer will do.

Input 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.2.1
    • addedInput schema / properties / domain / description
      Added value: +"The 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."
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the annotations by disclosing the dedup window (~a minute), the cache-first explanation behavior, and the operational consequence that `scanned_at` may predate a just-made DNS change, with explicit advice to wait out the window before verifying an edit — which is the real meaning behind idempotentHint=false. It also describes the report shape (status vocabulary, observed record, fixengine fix_record, sender_requirements and its pass/fail/unknown/email_test/not_visible semantics) and scopes the fix capability honestly (DMARC and DNS fixable, SPF diagnose-only).

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?

Front-loaded with the when-to-use trigger list and ends with the decisive routing contrast against get_report, so the important parts are at the edges. It is dense and includes a long run-on opening clause plus a parenthetical aside about SPF being diagnose-only, but nearly every sentence carries operational weight; trimming would cost real information.

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

Completeness5/5

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

With no output schema and a single parameter, the description carries the full burden and does so: it describes the returned checks, status vocabulary, fix_record presence, sender_requirements semantics, and the caveat that these are provider-published rules rather than a compliance verdict. An agent has everything needed to call it, interpret the response, and know when re-calling is required.

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 format, punycode normalization and subdomain handling are already covered and the baseline would be 3. The description adds a genuine behavioral constraint the schema lacks: the domain must be the user's real one, ask if unstated, and never use a placeholder. Minor missed opportunity on any per-domain limits or scoping nuance, but the value-add is real.

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 ("force a fresh scan of a domain and return its full report") and enumerates exactly what the scan covers: seven named deterministic checks, each with status values pass/warn/fail/info/temperror. It explicitly differentiates from the sibling get_report ("use get_report when a recent cached answer will do"), so an agent can route without opening either 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?

Gives an extensive trigger list (SPF, DKIM, DMARC, spam placement, MX, DNS health, blacklist, expiry) plus the fallback "whenever a conversation turns to a specific domain's email or DNS setup." It names the alternative tool and the condition that selects it, and pre-empts the two common misuse cases: ask for the real domain first, never scan a placeholder like example.com.

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